我已经设置了一个 java 应用程序,它充当 Web 服务器并处理 http 请求。我已经测试过它在容器外工作(确实如此),但是在容器中时我的请求似乎没有到达它。
服务器监听3971端口,Dockerfile如下所示:
FROM java:8
ADD VaultServer /
EXPOSE 3971
EXPOSE 3972
ENTRYPOINT ["java", "-jar", "VaultServer.jar"]
调用根地址应该返回一些东西(通常我会发送一个 GET 到 http://localhost:3971/)。
我已经尝试用 docker-machine 的 ip 地址替换“localhost”,也尝试用检查我的服务器正在运行的容器时获得的 ip 地址,但似乎都没有响应。当我调用 docker-machine 的 ip 地址时,我得到 ERR_CONNECTION_REFUSED。我还需要启用其他功能吗?
最佳答案
您正在执行 EXPOSE 3972,它会将端口暴露给其他链接容器,但不会暴露给主机
将端口暴露给你做的主机......
docker run -p 3972:3972 ....... etc
你也可以做...
docker run -P
这会将 EXPOSE 公开的所有端口公开给主机(这不是默认设置 - 您必须在此处使用 -P 标志)
关于java - 如何将 HTTP 请求发送到在 docker 容器中运行的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338538/