Docker Compose Watch とは
2023年9月21日にリリースされた Docker Compose v2.22.0 で追加されたホットリロード機能です。 docker-compose.yml
に対象ファイルを指定すると、 docker compose up --watch
で、そのファイルの変更を検知して反映することができるようになりました。
変更を検知したときに実行できるアクションとして、sync
, rebuild
, sync+restart
の3種類があります。
公式ドキュメントはこちら↓
GAリリース発表されたときの記事↓
使い方
docker compose の設定ファイル docker-compose.yml
(最近は compose.yaml
推奨らしい) にdevelop:
以下を追加します。
services:
web:
build: .
command: npm start
develop:
watch:
- action: sync
path: ./web
target: /src/web
ignore:
- node_modules/
- action: rebuild
path: package.json
watch:
にはアクションを複数設定可能で、以下の設定項目があります。
-
action
:sync
rebuild
sync+restart
の3種類 -
path
: 監視するファイル・ディレクトリのパス -
target
:path
で指定したファイルのコンテナ側でのパス -
ignore
:path
で指定したパスないのファイルのうち、除外したいファイルのパス
この状態で以下のコマンドを実行すると、path
で指定したパス以下のファイルの変更を検知して、指定したアクションを実行してくれます。
$ docker compose up --watch
少し前まで sync+restart
にバグがあったので、docker compose のバージョンを v2.29.2
以上にした方がよさそうです。
https://docs.docker.com/compose/releases/release-notes/#2292
Fixed an issue which stopped the Compose process for a single container on sync-restart Watch action.
おわりに
最近久しぶりに Docker Compose を使ったリポジトリを作る機会があり、ホットリロードのいい方法がないか探していたのですが、ちょうど最近追加され便利な機能があったので記事にしてみました。ぜひ使ってみてください。
docker-compose
コマンドが docker compose
になってから数年が経ち、ようやく慣れてきましたが、今度は docker-compose.yml
ではなく compose.yaml
が推奨されていたり、新しい機能が増えたりしていて、久しぶりに docker を触ると新たな発見がたくさんあり、楽しいですね。
今後も新しい機能をどんどん活用して、最高の開発環境を作っていきたいです!