gpt4 book ai didi

java - 与 Spring Boot Docker 容器的服务间 RestTemplate 通信问题

转载 作者:行者123 更新时间:2023-12-02 04:20:34 25 4
gpt4 key购买 nike

我正在尝试使用 docker 容器设置 springboot 之间的 Restful 服务通信。

调用链如下:

pdf- Generation-orchestrator > ms-template-data-binder > ms-html-to-pdf

当前两个服务不在 docker 中时,它们可以与第三个服务(即 ms-html-to-pdf 服务)的 docker 实例通信。

但是,当我为 3 个服务设置 docker 容器时,前 2 个服务无法相互通信。

3 个服务的 docker 容器通过 docker compose file ... up cmd 启动正常

注意:pdf- Generation-orchestrator application.yml 中指定的 ms-template-data-binder url 如下:

模板: 数据绑定(bind)器: 基本网址:http://ms-template-data-binder:8080

当我按如下方式访问 pdf- Generation-orchestrator 时:

curl -m 10 -X GET http://localhost:8001/pdf/v2 | base64 -D > test.pdf

我在 docker compose 控制台中收到以下错误:

2019-06-17 18:34:55.275 错误 1 ​​--- [nio-8001-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : servlet [dispatcherServlet] 的 Servlet.service()在路径 [] 的上下文中抛出异常 [请求处理失败;嵌套异常是 org.springframework.web.client.ResourceAccessException:“http://localhost:8080/template/data-bind-pdf”的 POST 请求上出现 I/O 错误:连接被拒绝(连接拒绝);嵌套异常是 java.net.ConnectException:连接被拒绝(连接被拒绝)] 其根本原因

我无法理解本地主机在错误堆栈中来自哪里:

下面是我的 docker compose 文件:

version: "2.1"
services:

ms-html-to-pdf:
image: nexus.cloud.uk:1000/shared/ms-html-to-pdfa:branch-develop
networks:
- api
expose:
- 1111
ports:
- 1111:1111
volumes:
- ./ms-html-to-pdfa/dev.yml:/opt/ms-html-to-pdfa/config.yml

ms-template-data-binder:
image: nexus.cloud.uk:1000:5000/poc/templ-data-binder:branch-develop
networks:
- api
expose:
- 8080
ports:
- 8080:8080

pdf-generation-orchestrator:
image: nexus.cloud.uk:1000:5000/poc/pdfgen:branch-develop
networks:
- api
expose:
- 8001
ports:
- 8001:8001

networks:
api:
driver: bridge

任何帮助将不胜感激,因为我是 docker compose 等的新手

最佳答案

问题在于需要在 docker compose 中覆盖 springboot localhost 8080 默认值。

我在客户端/orchestractor服务下的docker compose文件中添加了一些环境变量,如下所示:

environment:
- TEMPLATER_HOST_NAME=http://ms-template-data-binder:8080
- PDF_GEN_HOST_NAME=http://ms-html-to-pdf:1111

然后调用springboot微服务的application.yml更新如下:

template:
data-binder:
base-url: ${TEMPLATER_HOST_NAME:http://localhost:8080}

pdf:
html-2-pdf:
base-url: ${PDF_GEN_HOST_NAME:http://localhost:1111}

我还重建并启动了所有 docker 镜像,以确保我从 nexus 存储库下载最新版本的镜像。

就是这样,希望对大家有帮助。

关于java - 与 Spring Boot Docker 容器的服务间 RestTemplate 通信问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com