一个堆栈的服务与另一个堆栈之间的 Docker 通信

Viv*_*kla 3 service-discovery resttemplate docker docker-stack

我正在尝试使用不同 docker 堆栈的简单服务发现方案。
假设我有 2 个堆栈。为简单起见,我将它们命名为 stackA 和 stackB。StackA 有一个名为“serviceA”的服务,StackB 有一个名为“serviceB”的服务。ServiceA 和 serviceB 有一个简单的 RestApplication。

现在我想从 serviceA 调用 serviceB。了解docker服务发现的概念,按照docker官方文档进行操作,但是无法调用serviceB。 在另一个堆栈上发现服务或容器

根据官方文档,我正在使用serviceB.StackB,但不能这样做。

无法理解原因。几点: 1.
每个堆栈创建自己的网络。是否因为两个堆栈不在同一网络中而发生?
2. 如果我只在不同的网络需要它们,我如何调用不同的服务

Viv*_*kla 5

我已经找到了上述问题的解决方案。
您需要遵循 2 个步骤:

  1. 想要相互通信的服务应该属于同一个网络
version: "3"
  services:
    serviceA:
    ....
    networks:
    - YOUR_NETWORK
networks:
  YOUR_NETWORK:
    external: true
Run Code Online (Sandbox Code Playgroud)
2. 如果您部署堆栈,您的服务总是以堆栈名称为前缀,例如**STACK-NAME_SERVICE-NAME**。
要发现另一个服务,只需使用 STACK-NAME_SERVICE-NAME:PORT