2015-12-17 1 views
4

Здравствуйте и спасибо, что нашли время :)Не удается подключиться к HTTP сервлет, когда построен как Dockercontainer

В настоящее время я столкнулся с некоторыми проблемами с SBT-родной-упаковщик и Докер. Я относительно новичок в этом. Собственно, это моя первая попытка. И вот моя проблема: У меня есть актер, который должен отвечать на HTTP-запросы. Он отлично работает, если я запускаю его без докеров. Теперь я хочу, чтобы он был построен как Dockercontainer (есть серверные спутники, поэтому я использую docker compose). Поэтому я использую sbt-native-packager, но теперь, когда я нажимаю localhost: 4444 Я просто получаю «Не найдено». Поэтому я думаю, что что-то не так с моими настройками dockerBuild. Я просто не могу узнать, что :(

Вот некоторые код:

Настройки

lazy val graphiteprocSetting = eventprocSettings ++ Seq(
name := "graphite-processor", 
dockerBaseImage := "nimmis/java:oracle-8-jdk", 
daemonUser in Docker := "root", 
debianChangelog in Debian := Some(file("*")), 
mainClass in Compile := Some("*.StreamProcessorKafkaToGraphite")) 

сборки

lazy val graphiteproc = Project(                   
    id = "graphiteproc",                      
    base = file("modules/graphiteproc"),                  
    settings = graphiteprocSetting        
).enablePlugins(DebianPlugin, JavaServerAppPackaging, DebianDeployPlugin, DockerPlugin, BuildInfoPlugin) 

Докер-compose.yml

graphiteprocessor: 
    # TODO insert correct version via sbt 
    image: graphite-processor:0.1.13-SNAPSHOT 
    volumes: 
    - ./conf:* 
    environment: 
    JAVA_OPTS: "-Dconfig.file=*" 
    ports: 
    - "4444:4444" 
    links: 
     - graphite 
     - kafka 

вывод докеров:

"NetworkSettings": { 
     ... 
     "Ports": { 
      "4444/tcp": [ 
       { 
        "HostIp": "0.0.0.0", 
        "HostPort": "4444" 
       } 
      ] 
     }, 
     ... 
     "Gateway": "172.17.0.1", 
     ... 
     "IPAddress": "172.17.0.2", 
     "Networks": { 
      "bridge": { 
       ... 
       "Gateway": "172.17.0.1", 
       "IPAddress": "172.17.0.2", 
       ... 

      } 
     } 
    } 
+0

Вы используете докер через виртуальную машину Linux? Или ваш хост непосредственно Linux? – VonC

+0

Мой хост непосредственно Linux –

+0

ОК, так что это не проблема переадресации портов между хостом и виртуальной машиной. – VonC

ответ

2

используя 0.0.0.0 в качестве хоста и меняя базовое изображение на gdepuille/fedora-java, работал для меня.

1

При создании изображения графитового-процессор: 0.1.13-SNAPSHOT вы использовали «ПОДВЕРГАТЬ 4444» в директиве? Если нет, то отображение порта -p 4444: 4444 не будет иметь никакого эффекта.

+0

Я попробовал его с dockerExposedPorts в Docker: = Seq (4444). Но это не помогло. –

+0

Как у вас работает Docker? Если он находится в загрузочном устройстве, таком как докер-машина, то «localhost» недействителен вне вспомогательной виртуальной машины. Например, если вы используете докер-машину, вам нужно выяснить правильный IP-адрес, запустив «docker-machine env». –

+0

Я не уверен, прав ли я. Docker работает локально на моей машине, без докерной машины и без жутких сетевых настроек (другие изображения докеров доступны через localhost). Я также попытался использовать 127.0.0.1. Также не повезло с этим. –