0

客户端应用程序将数据发送到 localhost:8080 上的服务器,该json服务器已打包并作为 docker 映像运行。使用 Postman chrome 应用手动发送 json 时,服务器工作正常。问题在于尝试写入 using 时抛出的dockerized客户。如何让它发挥作用?java.net.ConnectException: Connection refused (Connection refused)jsonHttpURLConnectionOutputStreamWriter

Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/client-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8088
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
4

2 回答 2

2

两个客户端应该在同一个网络上运行。所以创建一个网桥MY_BRIDGE

docker network create MY_BRIDGE

运行它们时,将两个容器连接到桥上。为服务器容器命名MY_SERVER

docker run --network MY_BRIDGE --name MY_SERVER MY_SERVER_IMAGE

docker run --network MY_BRIDGE MY_CLIENT_IMAGE

在运行客户端容器之前,您的应用程序代码必须从 更改为localhost:8080MY_SERVER:8080

请参阅Docker 桥文档

于 2018-08-28T06:00:48.080 回答
0

在 docker 中,每个容器都有自己的虚拟化网络堆栈 - localhost是容器环回接口的地址,而不是主机环回接口的地址。

您必须将客户端配置为使用其主机名连接到服务器。如果您正在使用docker-compose,只需服务器的容器名称,或者如果您手动运行容器,则只需 docker 主机的主机名。

参考:使用独立容器联网

于 2018-08-27T20:27:44.523 回答