docker compose推奨構成
This content is a draft and will not be included in production builds.
DockerfileについてはDockerfileベストプラクティス2024がある。
部分的に書き換える
Section titled “部分的に書き換える”テストのときにDB等のサービスが必要で、元の compose.yml がある場合など部分的に拡張したい場合は extends を使うといい。
services: diamond-redis: extends: file: ../docker-compose.yml service: diamond-redis runner: image: node:22 depends_on: diamond-redis: condition: service_healthy environment: - IS_REDIS_CLUSTER=false - REDIS_HOSTS=diamond-redis:6379 - SECONDARY_REDIS_HOSTS=diamond-redis-secondary:6379 tty: trueボリュームマウントの代わりにwatchする
Section titled “ボリュームマウントの代わりにwatchする”従来は volumes ディレクティブでローカルのファイルシステムをマウントしていたけれど、この場合、ファイルのオーナーが異なっていることによる問題や、ホストとコンテナで環境が異なる場合に動作しないバイナリが作られる可能性がある。
この問題を対処するためファイルに変更があったら同期するようなしくみがあるので、それを使う。
services: develop: watch: - action: rebuild path: package.json - action: sync path: . target: /app ignore: - node_modules/この構成で
docker compose watchまたは
docker compose up --build --watchを実行すると、package.json が更新されたとき rebuild アクションによって Dockerfile の再ビルドが行われる。他のコードが変更された場合は sync アクションでコンテナと同期する。