docker compose の profile でサービス除外

docker compose の profile 機能を使うと一部のサービスを除外することができる。

version: "3.9"
services:
  backend:
    image: backend

  db:
    image: mysql

  db-migrations:
    image: backend
    command: myapp migrate
    depends_on:
      - db
    profiles:
      - tools

例えば上記の設定ファイルがあったときにデフォルトだと db-migrations コンテナは立ち上がらない

# backend, db のみ起動
$ docker-compose up -d

下記のように明示的に指定することで、コンテナを立ち上げることができる。

$ docker-compose run db-migrations

下記のように debug 時のときのみとか常時実行する必要ないコンテナはこの profile を設定しておくのが吉。

services:
  phpmyadmin:
    image: phpmyadmin
    depends_on:
      - db
    profiles:
      - debug

  db:
    image: mysql

参考