如何使用docker运行undertow java应用程序
我在docker的应用程序中使用undertow 我能做到以下几点如何使用docker运行undertow java应用程序,java,curl,docker,undertow,Java,Curl,Docker,Undertow,我在docker的应用程序中使用undertow 我能做到以下几点 创建脂肪罐 从中创建docker图像 运行docker映像 在8080上列出并在Docker文件中添加了EXPOSE 8080 从容器内部卷曲我的url,卷曲localhost:8080/sample 我面临着一些奇怪的问题 我的写作文件是 version: '2' services: login: image: my-image ports: - "8080:8080" 使用8080端口,我无法
version: '2'
services:
login:
image: my-image
ports:
- "8080:8080"
使用8080端口,我无法访问url
我的Dockerfile
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 server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path)
.build();
我在谷歌上找到了一些链接,但仍然无法正常工作
你是如何运行docker映像的? 您是发布端口吗
docker run -p 8080:8080 ...
通过将ip侦听到docker容器ip地址,解决了此问题 我把我的听众改为
Undertow server = Undertow.builder()
.addHttpListener(8080, InetAddress.getLocalHost().getHostAddress())
.setHandler(path)
.build();
现在它运行良好
“外部IP是完全不同的。因此,总之,您
必须将undertow的主机服务器设置为中的内部IP
“docker创建的Iptables”
我没有读到参考链接()中的这一行
我老板发现了 但是请记住,如果您为此容器使用多个docker网络,您将遇到问题。在这个场景中,您应该使用
.addHttpListener(8080,“0.0.0.0”)
,它的基本意思是:“监听所有ip地址”@ShrimpPhaser,谢谢您的建议。这也行得通。