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

时间:2018-05-17 16:21:35

标签: docker resttemplate service-discovery docker-stack

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

现在我想从serviceA调用serviceB。我理解docker服务发现的概念并遵循docker官方文档但无法调用serviceB。 discovering-services-or-containers-on-another-stack

根据官方文档,我使用 serviceB.StackB ,但无法做到。

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

1 个答案:

答案 0 :(得分:1)

我找到了上述问题的解决方案 您需要遵循两个步骤:
1.希望相互通信的服务应属于同一网络 version: "3" services: serviceA: .... networks: - YOUR_NETWORK networks: YOUR_NETWORK: external: true
2.如果部署堆栈,则服务始终以堆栈名称为前缀,例如 STACK-NAME_SERVICE-NAME
要发现另一个服务,只需使用STACK-NAME_SERVICE-NAME:PORT