java.net.ConnectException:两个微服务之间通过docker的连接被拒绝



我有两个微服务。一个名为";配置服务";另一个被命名为";发送者服务";。REST之后的第一个使下载配置成为可能。在本地,使用(Intellij(环境,服务可以毫无问题地进行通信。当我试图使用Docker通过rest将任何东西从一个服务下载到另一个服务时,问题就来了。此外,在运行配置服务后,我可以在浏览器中轻松检索值数据。

然而,当我运行下面的compose时,我会得到一个错误,就像标题中一样。在其余的线程中,我只找到了"network"的一个建议,但它不起作用。

总之,只有使用docker才会出现通信问题,这就消除了代码的问题。

第一个码头文件:

FROM adoptopenjdk/openjdk11:latest
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8888
ENTRYPOINT ["java","-jar","/app.jar"]

第二:

FROM adoptopenjdk/openjdk11:latest
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8889
ENTRYPOINT ["java","-jar","/app.jar"]

Docker组成:

version: '3.1'
services:
configuration-service:
image: configuration:latest
container_name: configuration-service
ports:
- "8889:8889"
restart: always
networks:
- common-network
sender-service:
image: sender:latest
container_name: sender-service
ports:
- "8888:8888"     
restart: always
networks:
- common-network

networks:
common-network:
driver: bridge

提前感谢任何提示

我认为@OneCricketer已经发现了这个问题。

如果您运行两个容器(在Docker之外(,则需要将它们作为--net=host或类似的容器运行,以便它们都绑定到主机端口,以便其中一个可以通过localhost:${PORT}访问另一个。

如果在Docker Compose下运行容器,它们将不能作为localhost访问,而是分别作为configuration-servicesender-service88898888上访问(假设服务确实绑定到这些端口(。

注意Composeports功能仅与绑定到主机网络的进程相关。由于ports,您应该能够从主机确认对88888889上这些服务的访问,但这对于确保configuration-servicesender-service能够相互通信是不必要的。

可能您提供了这样的url来与侦听端口8889:的服务通信

localhost:8889/path

localhost在每个容器中的意思不同,请尝试以下内容:

configuration-service:8889/path

最新更新