我正在尝试将堆栈abc-abc_one中的一项服务连接到zyx-zyx_two堆栈中的两项服务。这些服务共享网络az-network。
我已经读过here,这是可以手动进行的,但是我需要使用docker-compose.yml文件来完成此操作,以将其部署到我的集群中。
一个简单的abc_one是
version: "3.5"
services:
one:
image: "10.30.13.81:5000/dotnetmicroservice"
environment:
ElasticSearchLogging:Uri: "http://zyx_two:9200/"
networks:
- az-network
networks:
az-network:
external: true
和zyx_two
version: "3.5"
services:
two:
image: "10.30.13.81:5000/dotnetmicroservice"
networks:
- az-network
networks:
az-network:
external: true
答案 0 :(得分:1)
它应该工作而无需添加zyx_前缀。
az-network 必须是覆盖docker网络
docker network create -d overlay --attachable az-network
服务名称在同一网络中的所有堆栈上都必须是唯一的。
abc堆栈(docker stack deploy -c abc-compose.yml abc
)
version: "3.5"
services:
one:
image: "10.30.13.81:5000/dotnetmicroservice"
environment:
ElasticSearchLogging:Uri: "http://two:9200/"
networks:
- az-network
networks:
az-network:
external: true
zyx堆栈(docker stack deploy -c zyx-compose.yml zyx
)
version: "3.5"
services:
two:
image: "10.30.13.81:5000/dotnetmicroservice"
networks:
- az-network
networks:
az-network:
external: true
答案 1 :(得分:0)
从docker compose reference到您设置为true的external
:
如果设置为true,则表示此网络是在Compose之外创建的。 docker-compose up不会尝试创建它,如果不存在,则会引发错误。
由于您的两个docker-compose
都将external
设置为true,这将引发错误并且不会创建网络。
从一个docker-compose中删除external
选项,并使用一个始终会首先运行的选项,这样它会创建网络,然后另一个堆栈会连接到它。