web-dev-qa-db-ja.com

Dockerは、サービスをオーバーライドするときに孤立したコンテナーを構成します

1つがもう1つをオーバーライドする2つのdocker-composeファイルが必要です。
(動機は Docker Compose Docs
ユースケースはbuildbot環境から来ています。最初のdocker-composeファイルは、単純なサービスを定義する必要があります。これは、テストされる予定のサービスです。取りましょう

version: '2'
services:
  service-node:
    build:
      context: ./res
      dockerfile: Dockerfile
    image: my/server
    env_file: .env

2番目のdocker-composeファイル(名前を付けましょうdocker-compose.test.yml)は、service-nodeをオーバーライドしてbuildbotワーカー機能を追加し、作成しますテスト機械を制御する2番目のコンテナー、つまり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 

両方のイメージをビルドし、両方のコンテナを実行しますが、1つの欠点があります。

docker-compose ps

bb-workerという1つのサービスのみを示しています。同時に

docker ps

両方を示しています。
さらに、コマンド

docker-compose down

1つのサービスのみを停止し、メッセージ/警告を出力しますFound Orphan containers。もちろん、メッセージはbb-masterを参照しています。

基本的なdocker-compose.ymlファイルをオーバーライドして、孤立していないサービスを追加できるようにするにはどうすればよいですか?

8
utom

フラグを付けてすべての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)

16
BMitch