Scala 生成为Dockercontainer时无法访问HTTP servlet
您好,感谢您抽出时间:) 目前,我在sbt native packager和Docker方面面临一些问题。我对这个比较陌生。事实上,这是我第一次尝试。我的问题来了: 我有一个Actor,它应该响应HTTP请求。如果我在没有Docker的情况下以本机方式运行它,效果会很好。现在我希望它被构建为Dockercontainer(有几个同伴,所以我使用DockerCompose)。因此,我使用sbt原生打包机,但现在当我点击 localhost:4444我刚刚得到“找不到”。所以我认为我的dockerBuild设置有问题。我就是不知道是什么:( 下面是一些代码: 背景Scala 生成为Dockercontainer时无法访问HTTP servlet,scala,docker,sbt-native-packager,Scala,Docker,Sbt Native Packager,您好,感谢您抽出时间:) 目前,我在sbt native packager和Docker方面面临一些问题。我对这个比较陌生。事实上,这是我第一次尝试。我的问题来了: 我有一个Actor,它应该响应HTTP请求。如果我在没有Docker的情况下以本机方式运行它,效果会很好。现在我希望它被构建为Dockercontainer(有几个同伴,所以我使用DockerCompose)。因此,我使用sbt原生打包机,但现在当我点击 localhost:4444我刚刚得到“找不到”。所以我认为我的dockerB
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"))
建造
Docker-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
docker inspect的输出:
"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",
...
}
}
}
当您构建image graphite处理器时:0.1.13-SNAPSHOT您在指令中使用了“EXPOSE 4444”吗?如果没有,端口映射-p 4444:4444将无效。使用0.0.0.0作为主机并将基本映像更改为gdepuille/fedora java对我有效。您是通过Linux虚拟机运行docker,还是您的主机本身直接是Linux?我的主机本身直接是一个LinuxOK,所以这不是主机和VM之间的端口转发问题。你确定docker容器正在运行吗?我的意思是,我认为sbt会在docker本地repo上创建一个
映像
,但稍后你必须运行它。你可以使用docker ps-l
进行检查。我的docker容器很好正在运行。但您的右侧sbt只创建了一个映像。我在Docker中使用DockerXPosedPorts:=Seq(4444)进行了尝试。但它没有帮助。您如何运行Docker?如果它位于引导程序(如Docker machine)中,则“localhost”在helper VM之外无效。例如,如果您使用Docker machine,则必须通过运行“Docker machine env”来确定正确的IP。我不确定是否正确。Docker在我的计算机上本地运行,no docker机器,没有令人毛骨悚然的网络设置(其他docker映像可以通过localhost访问)。我也尝试使用127.0.0.1。也没有运气。最后的猜测可能是本地防火墙,或者再次检查您是否在尝试使用DockerPosedPorts的位置重建并运行了正确的标记。
"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",
...
}
}
}