11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker compose にホットリロード機能が追加されていた件【Docker Compose Watch】

Posted at

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: 以下を追加します。

docker-compose.yml の例
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 を触ると新たな発見がたくさんあり、楽しいですね。

今後も新しい機能をどんどん活用して、最高の開発環境を作っていきたいです!

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?