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

Connect to a service on a different stack from docker-compose

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

来自 docker compose reference 关于 external 你设置为 true:

If set to true specifies that this network has been created outside of Compose. docker-compose up does not attempt to create it and raises an error if it doesn’t exist.

由于您的两个 docker-compose 都将 external 设置为 true,因此会引发错误并且不会创建网络。

从 docker-composes 之一中删除 external 选项,首先使用始终为 运行 的那个,这样它就创建了网络,然后是另一个堆栈连接到它。

无需添加 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