docker 容器中的 Spring Boot WebClient 损坏
Springboot WebClient Broken in docker container
Iv 创建了两个 Springboot 应用程序,Iv dockerized 并创建了本地容器。
当我 运行 通过我机器上的 intellij 在本地应用程序时,它们工作正常。 localhost:8080 上的应用程序 A 有一个 Spring WebClient,其 baseUrl localhost:8081 配置为在端口 8081 上调用应用程序 B 运行ning。这很好用。
当我将这些容器添加到 docker 撰写文件并启动
时,问题就开始了
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 容器内部进行通信
感谢任何帮助
如果您在一个容器内使用 localhost
试图与另一个容器内的服务 运行 通信,则使用的主机是错误的。 localhost
容器内部是指容器本身而不是它的宿主。要在容器之间建立连接,您需要使用要连接的容器的 IP 地址,而不是 localhost
。 This networking tutorial 可能会感兴趣。
Iv 创建了两个 Springboot 应用程序,Iv dockerized 并创建了本地容器。 当我 运行 通过我机器上的 intellij 在本地应用程序时,它们工作正常。 localhost:8080 上的应用程序 A 有一个 Spring WebClient,其 baseUrl localhost:8081 配置为在端口 8081 上调用应用程序 B 运行ning。这很好用。
当我将这些容器添加到 docker 撰写文件并启动
时,问题就开始了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 容器内部进行通信
感谢任何帮助
如果您在一个容器内使用 localhost
试图与另一个容器内的服务 运行 通信,则使用的主机是错误的。 localhost
容器内部是指容器本身而不是它的宿主。要在容器之间建立连接,您需要使用要连接的容器的 IP 地址,而不是 localhost
。 This networking tutorial 可能会感兴趣。