docker composeの--profileオプションで必要な時だけserviceを立ち上げる

docker composeって必要なserviceまとめて扱うから重いと思ってた

例えば Procfile であれば起動しないプロセスを簡単にコメントアウトできるので、一時的な ON/OFF も容易だ。

web: bundle exec rails s
worker: bundle exec good_job start # <- コメントアウトすれば済む

しかし docker compose は長大な YAML になっていて簡単に切り替えできないんだよなぁとずっと思っていたんだけど、いつの間にか profile というものができていた。

2021-01-20 の version 1.28.0 で --profile を support して以降、この状況は変わっていたようだ。

Docker Compose release notes | Docker Docs

ということは、2023-06 に docker compose v1 が EOL になっている今、利用可能な compose コマンドでは必ず使えるということになる。

Docker Compose: What’s New, What’s Changing, What’s Next | Docker

profileの使い方

Using profiles with Compose | Docker Docs

  • compose YAML において、service が profiles property を持つ
  • profiles を持っていない service は常に対象となる
  • docker compose up 時に --profile を与えた場合、その profile を持つ service が有効となる

ということは、

  • 普段使わなくて済む特別な service や重いので常用したくないものにはそれ用の profile を付け
  • 必要な時だけ --profile で有効にする

という使い方をすればよい。

もう3年も前の話だったのね…。

More