链接在两个不同的docker-compose文件中配置的容器

时间:2018-09-21 07:49:04

标签: docker continuous-integration docker-compose devops

假设我有两种不同的docker-compose配置:

db.yml

version: '3'
networks:
    default:
        external:
            name: backend

volumes:
    mongo_data:

services:
    mongodb:
        image: mongodb
        container_name: mongodb
        restart: always
        ports:
            - 27017:27017
        networks:
            - backend
        volumes:
            - mongo_data:/data/db

admin.yml

version: '3'
networks:
    default:
        external:
            name: backend

volumes:
    mongo_data:

services:
    mongoclient:
        image: mongoclient/mongoclient
        restart: always
        ports:
            - 3000:3000
        networks:
            - backend
        depends_on:
            - mongodb
        links:
            - mongodb

这将不起作用,因为链接的容器未在同一文件中配置。但是有办法达到类似的目的吗?

我希望有一个更干净的设置来设置生产环境,以便我只能重新启动已更改的相关位,而不是立即重新启动。

1 个答案:

答案 0 :(得分:1)

要链接到mongodb,您需要链接“外部”:

...
external_links:
        - project_mongodb_1:mongodb
...

请注意,您需要将project_mongodb_1替换为docker-compose ps为您提供的正确名称。您需要删除depends_on部分。这行不通。看到这里:https://github.com/docker/compose/issues/3951

但是,您根本不应该使用链接,因为它们已被弃用。有关更多信息,请参见此处:https://docs.docker.com/compose/compose-file/#external_links

有关如何操作的信息,请参见:https://stackoverflow.com/a/38089080/1029251