Docker 一个堆栈的服务与另一个堆栈之间的通信
Docker Communication between service of one stack to another
我正在尝试使用不同的 docker 堆栈的简单服务发现场景。
假设我有 2 个堆栈。为简单起见,我将它们命名为 stackA 和 stackB。
StackA 有一个名为 'serviceA' 的服务,StackB 有一个名为 'serviceB' 的服务。
ServiceA 和 serviceB 有一个简单的 RestApplication。
现在我想从服务A调用服务B。理解了docker服务发现的概念,遵循了docker官方文档,但是无法调用serviceB。
discovering-services-or-containers-on-another-stack
根据官方文档,我正在使用 serviceB.StackB ,但无法使用。
无法理解 reason.Few 点:
1.each 堆栈创建自己的网络。发生这种情况是因为两个堆栈不在同一网络中吗?
2.如果我只在不同的网络中需要它们,我该如何调用不同的服务
我已经找到解决上述问题的方法。
您需要完成 2 个步骤:
- 要相互通信的服务应该属于同一个网络
version: "3"
services:
serviceA:
....
networks:
- YOUR_NETWORK
networks:
YOUR_NETWORK:
external: true
2. 如果您部署堆栈,您的服务总是以堆栈名称为前缀,例如 **STACK-NAME_SERVICE-NAME**。
要发现另一项服务,只需使用 STACK-NAME_SERVICE-NAME:PORT
我正在尝试使用不同的 docker 堆栈的简单服务发现场景。
假设我有 2 个堆栈。为简单起见,我将它们命名为 stackA 和 stackB。
StackA 有一个名为 'serviceA' 的服务,StackB 有一个名为 'serviceB' 的服务。
ServiceA 和 serviceB 有一个简单的 RestApplication。
现在我想从服务A调用服务B。理解了docker服务发现的概念,遵循了docker官方文档,但是无法调用serviceB。 discovering-services-or-containers-on-another-stack
根据官方文档,我正在使用 serviceB.StackB ,但无法使用。
无法理解 reason.Few 点:
1.each 堆栈创建自己的网络。发生这种情况是因为两个堆栈不在同一网络中吗?
2.如果我只在不同的网络中需要它们,我该如何调用不同的服务
我已经找到解决上述问题的方法。
您需要完成 2 个步骤:
- 要相互通信的服务应该属于同一个网络
version: "3"
services:
serviceA:
....
networks:
- YOUR_NETWORK
networks:
YOUR_NETWORK:
external: true
2. 如果您部署堆栈,您的服务总是以堆栈名称为前缀,例如 **STACK-NAME_SERVICE-NAME**。
要发现另一项服务,只需使用 STACK-NAME_SERVICE-NAME:PORT