重写服务时,Docker组合孤立容器

问题描述 投票:7回答:1

我想要两个docker-compose文件,其中一个覆盖另一个。 (动机来自Docker Compose Docs) 用例来自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)覆盖服务节点以添加buildbot worker功能,并创建第二个容器,即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

只停止一个服务,并输出消息/警告Found orphan containers。当然,消息指的是bb-master。

如何覆盖基本的docker-compose.yml文件以便能够添加其他非孤立服务?

docker docker-compose buildbot
1个回答
15
投票

您需要使用标志运行所有docker-compose命令,例如:

docker-compose -f docker-compose.yml -f docker-compose.test.yml down

或者,您可以通过将以下内容写入同一文件夹中的.env文件来使其成为默认值:

COMPOSE_FILE=docker-compose.yml:docker-compose.test.yml

注意:

在Windows中你需要使用“;”作为分隔符(@louisvno)

© www.soinside.com 2019 - 2024. All rights reserved.