当前位置: 首页 > 知识库问答 >
问题:

Springboot WebClient在docker容器中损坏

浦德义
2023-03-14

Iv创建了两个Springboot应用程序,Iv对其进行了文档化并创建了本地容器。当我通过intellij在我的机器上本地运行应用程序时,它们工作正常。localhost:8080上的应用程序A有一个Spring WebClient,其中有一个base Urllocalhost:8081配置为调用在端口8081上运行的应用程序B。这工作得很好。

当我将这些容器添加到 docker compose 文件并旋转然后向上旋转时,问题就开始了

version: "3.7"
services:

appa:
  image: application/myapp:1
  hostname: localhost
  ports:
    - 8080:8080

  appb:
    image: application/myapp:2
    hostname: localhost
    ports:
      - 8081:8081

我可以从浏览器点击localhost:8080,但是当应用程序中的客户端尝试使用WebClient调用应用程序b时,它会崩溃

Error has been observed at the following site(s):
             |      |_ checkpoint ⇢ Request to GET 
http://localhost:8081/api/feed [DefaultWebClient]
             | Stack trace:
             | Caused by: java.net.ConnectException: finishConnect(..) failed: 
Connection refused

我可以从浏览器或curl中访问这两个应用程序,但它们似乎无法在docker容器中进行内部通信

任何帮助赞赏

共有1个答案

周志文
2023-03-14

如果您在一个容器中使用< code>localhost来尝试与另一个容器中运行的服务进行通信,那么使用该主机是错误的。容器中的< code>localhost是指容器本身,而不是其主机。要在容器之间建立连接,您需要使用想要连接的容器的IP地址,而不是< code>localhost。这篇网络教程可能会让你感兴趣。

 类似资料:
  • 我有一个容器,我想停止,但当我做一个它挂起,永远不会停止它。 我试过正常的和

  • 如何使用PHP在容器本身中获取Docker容器ID? 我刚刚发现linux命令如下:

  • 问题内容: 我想在Centos7的Docker容器中运行Jenkins。我看到了Jenkins的官方文档:首先,从Docker存储库中提取官方的jenkins映像。 接下来,使用该映像运行一个容器,并将数据目录从该容器映射到主机;例如,在下面的示例中,容器中的/ var / jenkins_home从主机上的当前路径映射到jenkins /目录。Jenkins 8080端口也以49001的身份向主

  • 问题内容: 在mem_limit太低的docker容器崩溃后,如何 在 容器中检 入 该容器的mem_limit?如果mem_limit设置为低,我想在启动时显示错误消息并退出。 问题答案: 在容器中为我工作,感谢塞巴斯蒂安的想法

  • 问题内容: 我一直在关注几种不同的教程以及官方教程,但是每当我尝试在容器中安装PostgreSQL时,我都会收到以下消息 我在SO和整个互联网上浏览了几个问题,但是没有运气。 问题答案: 问题是您的应用程序/项目正在尝试访问HOST机器(不是docker容器)中的postgres套接字文件。 要解决这个问题,要么必须在使用该标志为postgres容器设置端口时明确要求进行tcp / ip连接,要么

  • 我一直在关注几个不同的教程以及官方教程,但是每当我试图在容器中安装PostgreSQL时,我都会收到以下消息 我在SO和整个互联网上看了几个问题,但没有运气。