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ファイルをオーバーライドして、孤立していないサービスを追加できるようにするにはどうすればよいですか?
フラグを付けてすべての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)