繁体   English   中英

docker容器内的spring boot引发java.net.ConnectException:连接被拒绝(连接被拒绝)

[英]Spring boot inside docker container throws java.net.ConnectException: Connection refused (Connection refused)

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

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"]

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

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

参考: 与独立容器联网

两个客户端应在同一网络上运行。 因此,创建一个网桥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

请参阅Docker Bridge文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM