我希望有两个docker-compose文件,其中一个覆盖另一个。
(该想法来源于Docker Compose文档)
使用案例是来自buildbot环境。第一个docker-compose文件应该定义一个简单的服务。这是一个将要被测试的服务。让我们来理解一下
version: '2'
services:
service-node:
build:
context: ./res
dockerfile: Dockerfile
image: my/server
env_file: .env
第二个 docker-compose 文件(我们将其命名为 docker-compose.test.yml)覆盖了 service-node,添加了 buildbot 工作器功能,并创建了第二个容器,即将控制测试机械的 buildbot 主节点。让我们来看一下。
version: '2'
services:
service-node:
build:
context: ./res
dockerfile: buildbot.worker.Dockerfile
image: my/buildbot-worker
container_name: bb-worker
env_file: ./res/buildbot.worker.env
environment:
- BB_RES_DIR=/var/lib/buildbot
networks:
testlab:
aliases:
- bb-worker
volumes:
- ./vol/bldbot/worker:/home/bldbotworker
depends_on:
- bb-master
bb-master:
build:
context: ./res
dockerfile: buildbot.master.Dockerfile
image: my/buildbot-master
container_name: bb-master
env_file: ./res/buildbot.master.env
environment:
- BB_RES_DIR=/var/lib/buildbot
networks:
- testlab
expose:
- "9989"
volumes:
- ./vol/bldbot/master:/var/lib/buildbot
networks:
testlab:
driver: bridge
通常情况下这个配置是有效的,即该命令
docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d
构建镜像和运行容器,但存在一个缺点,即该命令
docker-compose ps
只显示一个服务,即bb-worker。同时
docker ps
展示两者。
此外,该命令
docker-compose down
仅停止一个服务,并输出消息/警告找到孤立的容器
。当然,该消息是指bb-master。
我如何覆盖基本的docker-compose.yml文件以能够添加其他非孤立服务?