客户机应用程序将json
数据发送到本地主机:8080上的服务器,该数据被打包并作为docker映像运行。当使用Postman chrome应用程序手动发送json时,服务器运行良好。该问题与停靠的客户端有关,该客户端在尝试使用OutputStreamWriter
将json
写入HttpURLConnection
时抛出OutputStreamWriter
。如何让它工作?
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"]
发布于 2018-08-28 14:00:48
两个客户端应该在同一网络上运行。因此创建一个网桥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:8080
更改为MY_SERVER:8080
。
发布于 2018-08-28 04:27:45
在docker中,每个容器都有自己的虚拟网络堆栈- localhost是容器的环回接口的地址,而不是主机的环回接口的地址。
您必须配置您的客户端以使用其主机名连接到服务器。如果您使用的是docker-compose
,则只需输入服务器的容器名称;如果您正在手动运行容器,则只需输入docker主机的主机名。
https://stackoverflow.com/questions/52046211
复制相似问题