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

与spring boot docker容器的服务间resttemplate通信问题

云欣嘉
2023-03-14

我正在尝试使用docker容器设置interspringboot restful服务通信。

调用链如下:

pdf生成编排器

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

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

3个服务的docker容器通过docker composfile... up cmd启动OK

注意:pdf-Generation-orchestratorapplication.yml中指定的ms-temtem-data-binder url如下:

模板:数据绑定器:基本url:http://ms-template-data-binder:8080

当我访问pdf生成编排器时,如下所示:

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.[.[.[ /].[调度Servlet]:Servlet.service()为servlet[调度Servlet]在路径[]的上下文中抛出异常[请求处理失败;嵌套异常是org.springframework.web.client.ResourceAccessException:http://localhost:8080/template/data-bind-pdf的POST请求的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撰写等

共有1个答案

慕光霁
2023-03-14

问题是springboot localhost 8080默认值需要在docker compose中重写。

我在docker撰写文件中添加了一些环境变量,如下所示:

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

然后是应用程序。调用springboot微服务的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下载最新版本的图像。

就是这样,希望它能帮助别人。

 类似资料:
  • Web主要围绕HTTP的请求/响应范例构建。客户端加载网页,然后在用户点击下一页之前没有任何操作。大约在2005年,AJAX开始让网络感觉更有活力。仍然,所有HTTP通信都由客户端引导,这需要用户交互或定期轮询以从服务器加载新数据。 使服务器能够在知道新数据可用的瞬间将数据发送到客户端的技术已存在很长时间了。它们的名称如“Push”或“Comet”。 将套接字引入Web Websocket规范定义

  • 我想写一个非常简单的API。当我使用邮差API时。我想创建android应用程序,但我的应用程序崩溃了。为什么?哪里是错误

  • 问题内容: 我知道这并不是一件容易的事,但是很遗憾,自昨天以来我一直被困在这里并与之抗争。我遵循了Android互助身份验证教程,将密钥库放置在资源中并尝试通过SSL连接到我的服务器,但是得到以下异常 java.lang.RuntimeException:org.spongycastle.jcajce.provider.asymmetric.x509.CertificateFactory $ Ex

  • 本文向大家介绍Android通过Socket与服务器之间进行通信的示例,包括了Android通过Socket与服务器之间进行通信的示例的使用技巧和注意事项,需要的朋友参考一下 一、首先进行Server的编写: 二、对客户端的编写,主要用用AIDL进行Server和Client AIDL 的编写主要为以下三部分: 1、创建 AIDL 1)、创建要操作的实体类,实现 Parcelable 接口,以便序

  • 现在我的ServerSocket是这样的 一切正常,客户端连接,发送一些数据,服务器读取它,但我的问题是如何从我的服务器发送消息到所有的客户端?我目前保存客户端上的ArrayList,所以我可以只是循环,ArrayList打开一个作家和刷新它,但我想发送的数据,我得到我的ClientConnection类 我应该如何处理这个代码?在服务器类上完成的所有操作?或