読んだブログ
内容
docker compose watch
コマンドが便利だよ、と言うお話。
使い方
1services:
2 web:
3 build: .
4 command: npm start
5 develop:
6 watch:
7 - action: sync
8 path: ./web
9 target: /src/web
10 ignore:
11 - node_modules/
12 - action: rebuild
13 path: package.json
develop.watch
フィールドに sync
や rebuild
を用意する。
- sync
- path以下で指定したファイルに変更があれば、コンテナ上に反映させる
- hot reloadをサポートするために必要
- rebuild
- 指定したファイルに変更があった際に、新しいイメージをビルドし直す
docker compose up --build
と同じ
起動する際は、 docker compose watch
で良い。
感想
- 自チームのプロダクトでは、GoでAirを使ってhot reloadを実現してるが、その代替となりうるか。
- ただ、airよりはhot reloadが遅くなるので合わないかも
- airの場合は、変更を検知して
make build
を実行してバイナリ実行をコンテナ上で即座に実施できる - 一方、この方法を使うと、imageからビルドし直すので、不必要なステップも踏みそう
- 適切にキャッシュしていると問題ないかも?要検証
- airの場合は、変更を検知して
- ただ、airよりはhot reloadが遅くなるので合わないかも