从docker-compose连接到不同堆栈上的服务

时间:2019-06-07 21:32:12

标签: docker docker-compose docker-swarm

我正在尝试将堆栈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

2 个答案:

答案 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选项,并使用一个始终会首先运行的选项,这样它会创建网络,然后另一个堆栈会连接到它。