我正在尝试使用docker容器设置springboot之间的平稳服务通信。
调用链如下:
pdf-generation-orchestrator> ms-template-data-binder> ms-html-to-pdf
当前两个服务不在docker中时,它们可以与第三个docker实例进行对话,即ms-html-to-pdf服务。
但是,当我为这3个服务设置docker容器时,前两个不能互相交谈。
3个服务的docker容器通过docker compose文件... up cmd启动了
注意:在pdf-generation-orchestrator应用程序.yml中指定的ms-template-data-binder网址如下:
模板: 数据绑定器: 基本网址: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] oaccC [。[。[/]。[dispatcherServlet]:Servlet [dispatcherServlet]的Servlet.service()在路径为[]的上下文中引发异常[请求处理失败;嵌套的异常是org.springframework.web.client.ResourceAccessException:POST请求“ http:// localhost :8080 / template / data-bind-pdf”时发生I / O错误:连接被拒绝(连接拒绝);嵌套异常是java.net.ConnectException:根本原因导致的连接被拒绝(连接被拒绝)
我无法理解错误堆栈中本地主机的来源:
以下是我的docker撰写文件:
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的新手等
答案 0 :(得分:0)
问题是springboot本地主机8080的默认值需要在docker compose中覆盖。
我在客户端/管弦乐队服务下的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}
我还重建并扩展了所有dockers镜像,以确保我从nexus repo下载了最新版本的镜像。
就这样,希望对您有所帮助。