Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker在重写服务时编写孤立容器_Docker_Docker Compose_Buildbot - Fatal编程技术网

Docker在重写服务时编写孤立容器

Docker在重写服务时编写孤立容器,docker,docker-compose,buildbot,Docker,Docker Compose,Buildbot,我想要两个docker compose文件,其中一个文件覆盖另一个文件。 (动机来自) 用例来自buildbot环境。第一个docker compose文件应该定义一个简单的服务。这是一项将要测试的服务。让我们坐飞机吧 version: '2' services: service-node: build: context: ./res dockerfile: Dockerfile image: my/server env_file: .env

我想要两个docker compose文件,其中一个文件覆盖另一个文件。
(动机来自)
用例来自buildbot环境。第一个docker compose文件应该定义一个简单的服务。这是一项将要测试的服务。让我们坐飞机吧

version: '2'
services:
  service-node:
    build:
      context: ./res
      dockerfile: Dockerfile
    image: my/server
    env_file: .env
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文件(我们将其命名为docker compose.test.yml)覆盖服务节点以添加buildbot辅助功能,并创建第二个容器,即控制测试机器的buildbot主节点。让我们坐飞机吧

version: '2'
services:
  service-node:
    build:
      context: ./res
      dockerfile: Dockerfile
    image: my/server
    env_file: .env
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
docker-compose down
生成两个图像并运行两个容器,但有一个缺点,即命令

docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d 
docker-compose ps
docker-compose down
只显示一个服务,bb worker。同时

docker ps
两者都显示。
此外,该命令

docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d 
docker-compose ps
docker-compose down
仅停止一项服务,并输出消息/警告
发现孤立容器
。当然,消息指的是bb主机


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

您需要运行所有带有标志的
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)

。有时,最明显的解决方案是如此接近,以至于人们看不到它们。非常感谢。这就像魅力一样,所以我一直在拉扯我的头发,直到我看到这个答案。很好,只是一个提示窗口ppl,分隔符是;而不是: