DockerComposeのfileはマージできる
docker compose
コマンド実行時に -f
オプションで読み込む設定ファイルを指定出来るが、複数ファイルを指定すると内容をマージして実行してくれる
docker-compose.main.yml
services: ruby: image: ruby:3.2.1
docker-compose.other.yml
services: python: image: puthon:3.9.16
configコマンドで実行される設定を確認できる
docker compose -f docker-compose.main.yml -f docker-compose.other.yml config
name: tmp services: python: image: python:3.9.16 networks: default: null ruby: image: ruby:3.2.1 networks: default: null networks: default: name: tmp_default
docker compose -f docker-compose.main.yml -f docker-compose.other.yml up -d docker compose -f docker-compose.main.yml -f docker-compose.other.yml ps -a
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS tmp-python-1 python:3.9.16 "python3" python 25 seconds ago Exited (0) 24 seconds ago tmp-ruby-1 ruby:3.2.1 "irb" ruby 25 seconds ago Exited (0) 24 seconds ago
重複する設定がある場合には後から指定したファイルの内容に上書きされるので注意が必要
docker-compose.other.yml
services: python: image: python:3.9.16 ruby: image: ruby:3.1.0
docker compose -f docker-compose.main.yml -f docker-compose.other.yml config
name: tmp services: python: image: python:3.9.16 networks: default: null ruby: image: ruby:3.1.0 networks: default: null networks: default:
毎回 -f
オプションをつけるのが手間であれば環境変数に設定してしまうと楽
export COMPOSE_FILE="docker-compose.main.yml:docker-compose.other.yml"
セパレータはMacやLinux(:)かWindowsか(;)で異なる