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

标签 java http docker webserver

我已经设置了一个 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/

相关文章:

docker - docker inspect -f '{{.Parent}}' 是获取基本镜像 ID 的安全方法吗?

java - Ant 和 Maven 之间的差异

java - API 级别 23 中删除了 org.apache.http 包。有什么替代方案?

mongodb - Docker-compose和mongoDB:无法在任何兼容版本下启动WiredTiger?

docker - Dockerfile 中的 RUN 命令不会在容器之间持续存在

json - 如何形成 ASP.NET OData WebApi 的 PATCH 正文?

java - 在 android 中的正则表达式中进行组约束

Java 8 流 : Populating a list of objects instantiated using values in a HashMap

Java(数组列表)

node.js - 无法访问 ec2 上的快速服务器