构建为 Docker 容器时无法访问 HTTP servlet
Can not reach HTTP servlet when built as Dockercontainer
您好,感谢您抽出时间:)
目前我在使用 sbt-native-packager 和 Docker 时遇到了一些问题。我对此比较陌生。实际上,这是我的第一次尝试。我的问题来了:
我有一个 Actor,它应该响应 HTTP 请求。如果我 运行 没有 Docker 就可以正常工作。现在我希望它被构建为一个 Docker 容器(有几个伙伴所以我使用 docker 组合)。因此,我使用 sbt-native-packager 但现在当我点击
localhost:4444 我刚刚得到 "Not found"。所以我认为我的 dockerBuild Settings 有问题。我只是不知道是什么:(
这里是一些代码:
设置
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)
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 检查的输出:
"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",
...
}
}
}
当您构建图像 graphite-processor:0.1.13-SNAPSHOT 时,您是否在指令中使用了 'EXPOSE 4444'?如果不是,端口映射 -p 4444:4444 将无效。
使用 0.0.0.0 作为主机并将基本图像更改为 gdepuille/fedora-java 对我有用。
您好,感谢您抽出时间:)
目前我在使用 sbt-native-packager 和 Docker 时遇到了一些问题。我对此比较陌生。实际上,这是我的第一次尝试。我的问题来了: 我有一个 Actor,它应该响应 HTTP 请求。如果我 运行 没有 Docker 就可以正常工作。现在我希望它被构建为一个 Docker 容器(有几个伙伴所以我使用 docker 组合)。因此,我使用 sbt-native-packager 但现在当我点击 localhost:4444 我刚刚得到 "Not found"。所以我认为我的 dockerBuild Settings 有问题。我只是不知道是什么:(
这里是一些代码:
设置
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)
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 检查的输出:
"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",
...
}
}
}
当您构建图像 graphite-processor:0.1.13-SNAPSHOT 时,您是否在指令中使用了 'EXPOSE 4444'?如果不是,端口映射 -p 4444:4444 将无效。
使用 0.0.0.0 作为主机并将基本图像更改为 gdepuille/fedora-java 对我有用。