如何 运行 使用 docker 支持 java 应用
How to run undertow java app with docker
我在 docker.
的应用程序中使用 undertow
我可以做到以下几点
创建 fat jar
从
创建 docker 图像
运行那个docker图片
在 8080 上列出并在 Docker 文件中添加了 EXPOSE 8080
curl 我的 url 来自容器内部,curl localhost:8080/sample
我遇到了一些奇怪的问题,
我的撰写文件是
version: '2'
services:
login:
image: my-image
ports:
- "8080:8080"
使用 8080 端口我无法访问 url。
我的Docker文件
FROM openjdk:8-jre
COPY ./target/*-with-dependencies.jar /jars/service-jar.jar
EXPOSE 8080
CMD java -cp /jars/service-jar.jar my.Main
我的 Undertow 听众
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path)
.build();
我在 google 中得到了一些 link 仍然无法正常工作
http://lists.jboss.org/pipermail/undertow-dev/2014-October/000999.html
您 运行 您的 docker 形象如何?
你在发布端口吗?
docker run -p 8080:8080 ...
通过侦听 docker 容器 ip 地址的 ip 解决了问题。
我把监听器改成
Undertow server = Undertow.builder()
.addHttpListener(8080, InetAddress.getLocalHost().getHostAddress())
.setHandler(path)
.build();
现在工作正常。
"The external IP is something completely different. So in summary you
must set the host server for undertow as the Internal IP in the
Iptables created by docker"
我错过了在我的参考资料中阅读这一行 link (http://lists.jboss.org/pipermail/undertow-dev/2014-October/000999.html)。
我老板发现了。
我在 docker.
的应用程序中使用 undertow我可以做到以下几点
创建 fat jar
从
创建 docker 图像
运行那个docker图片
在 8080 上列出并在 Docker 文件中添加了 EXPOSE 8080
curl 我的 url 来自容器内部,curl localhost:8080/sample
我遇到了一些奇怪的问题,
我的撰写文件是
version: '2'
services:
login:
image: my-image
ports:
- "8080:8080"
使用 8080 端口我无法访问 url。
我的Docker文件
FROM openjdk:8-jre
COPY ./target/*-with-dependencies.jar /jars/service-jar.jar
EXPOSE 8080
CMD java -cp /jars/service-jar.jar my.Main
我的 Undertow 听众
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path)
.build();
我在 google 中得到了一些 link 仍然无法正常工作
http://lists.jboss.org/pipermail/undertow-dev/2014-October/000999.html
您 运行 您的 docker 形象如何? 你在发布端口吗?
docker run -p 8080:8080 ...
通过侦听 docker 容器 ip 地址的 ip 解决了问题。
我把监听器改成
Undertow server = Undertow.builder()
.addHttpListener(8080, InetAddress.getLocalHost().getHostAddress())
.setHandler(path)
.build();
现在工作正常。
"The external IP is something completely different. So in summary you must set the host server for undertow as the Internal IP in the Iptables created by docker"
我错过了在我的参考资料中阅读这一行 link (http://lists.jboss.org/pipermail/undertow-dev/2014-October/000999.html)。
我老板发现了。