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"

セパレータはMacLinux(:)かWindowsか(;)で異なる

参照