如何将HTTP请求发送到在docker容器中运行的服务器?

And*_*ndy 4 java webserver http docker

我已经设置了一个java应用程序,它充当Web服务器并处理http请求.我已经测试过它在容器外面工作(它可以),但是在容器中我的请求似乎没有达到它.

服务器侦听端口3971,Dockerfile如下所示:

FROM java:8
ADD VaultServer /
EXPOSE 3971
EXPOSE 3972
ENTRYPOINT ["java", "-jar", "VaultServer.jar"]
Run Code Online (Sandbox Code Playgroud)

调用根地址应该返回一些东西(通常我会发送一个GET到http:// localhost:3971 /).

我已经尝试用docker-machine的ip地址替换'localhost',并且在检查我的服务器的运行容器时也检查了ip地址,但似乎都没有响应.当我调用docker-machine的ip地址时,我得到了ERR_CONNECTION_REFUSED.我还需要启用其他功能吗?

dan*_*y74 15

你正在做EXPOSE 3972,它将端口暴露给其他链接的容器,但不暴露给主机

要将端口暴露给主机,您需要...

docker run -p 3972:3972 ....... etc
Run Code Online (Sandbox Code Playgroud)

你也可以......

docker run -P
Run Code Online (Sandbox Code Playgroud)

暴露EXPOSE暴露给主机的所有端口(这不是默认值 - 你必须在这里使用-P标志)