ソフトウェア
中級

Docker Compose Watch(ドッカーコンポーズウォッチ)

2024年Docker Compose 2.29+対応のFile Watch機能。File変更検知+Auto Sync+Auto Rebuild+Hot Reload+develop section設定+Tilt/Skaffold代替候補+開発体験改善搭載。

0 回閲覧
0 いいね
2026/5/5 更新
関連タグ
Docker
Docker Compose
Watch
Hot Reload
DevOps

概要

Docker Compose Watchは2024年Docker Compose 2.29+でstable昇格したFile Watch機能で、compose.yaml の develop section に watch 設定を記述するだけで、ローカルファイル変更を検知してContainer内のファイルを自動Sync+Auto Rebuild+Hot Reloadを実行する仕組み。従来のVolume Mount(ローカルファイルをContainerにバインド)+inotify-based Watcher(Library/Frameworks独自)の組み合わせを統合・標準化したもので、Docker公式のオールインワン開発体験ツール。Tilt(Apache 2.0)・Skaffold(Apache 2.0)等のKubernetes開発ツールが提供していた「ファイル変更→Container自動更新」のWorkflow をDocker Compose 単独で実現可能にし、Microservices開発の生産性向上に貢献。docker compose watch コマンドまたは --watch フラグで起動、CTRL+C で終了する単純なCLI。Sync(ファイル単位の同期)・Rebuild(イメージ再構築)・Sync+Restart(Sync後Container再起動)の3 Action型で、ファイル変更パターン別に動作切替可能。

主な特徴・仕組み

  • develop.watch設定: compose.yaml 内に Watch ルール宣言、複数Service対応
  • Sync Action: ローカル→Containerファイル単純同期、Hot Reload Friendly
  • Rebuild Action: イメージ再構築+Container再起動、Dockerfile変更対応
  • Sync+Restart Action: Sync後Container再起動、Configuration変更対応
  • Path Pattern: glob pattern対応(src/**/*.js、!**/test/** 除外)
  • ignore Pattern: gitignore風の除外設定、無関係ファイル変更無視
  • target Path: Container内の同期先指定、複雑なProject構造対応
  • CLI起動: docker compose watch または docker compose up --watch
  • Multi-Container: 複数Service同時Watch、Microservices開発最適
  • inotify/FSEvents: Linux/macOS Native File Watcher、CPU効率良
  • Production非推奨: 開発専用、Production deployは通常 docker compose up

スペック比較表

項目Docker Compose WatchVolume Mount+Hot ReloadTiltSkaffold
設定場所compose.yaml develop sectiondocker-compose.yml volumesTiltfile(Starlark)skaffold.yaml
学習曲線低低(既知)中-高中
Auto Rebuild○× Manual○○
Multi-target対応○△○○
Kubernetes統合××○ Native○ Native
Bundle SizeNative(0KB)0KB~30MB~70MB
Watch効率inotify NativeOS Nativeinotifyinotify
設定複雑度シンプルシンプル高中

具体例・対応製品

# compose.yaml
services:
  web:
    build: ./web
    ports:
      - "3000:3000"
    develop:
      watch:
        - action: sync
          path: ./web/src
          target: /app/src
          ignore:
            - node_modules/
            - .git/
        - action: rebuild
          path: ./web/package.json
        - action: sync+restart
          path: ./web/.env
          target: /app/.env

  api:
    build: ./api
    develop:
      watch:
        - action: sync
          path: ./api
          target: /app
          ignore:
            - "**/*.pyc"
            - "__pycache__/"
        - action: rebuild
          path: requirements.txt
# CLI起動
docker compose watch
# または
docker compose up --watch
  • Docker Desktop 4.27+ (2024): Docker Compose Watch標準同梱
  • Docker Compose 2.29+ (2024): stable昇格、Production-grade品質
  • Next.js + Hot Module Replacement: sync action+ Next.js webpack-dev-server連携で完全Hot Reload
  • Python Flask/FastAPI + uvicorn --reload: sync action+uvicorn watcher組合せ
  • Go air/CompileDaemon: Go ビルド+Hot Reload組合せ
  • 競合機種: Volume Mount+Library Hot Reload、Tilt(Kubernetes)、Skaffold、devspace.sh

自作PCでの選び方・注意点

Docker Compose WatchはWeb/Microservices開発者向けの開発体験改善機能で、jisaku.com の VPS API(Hono on Bun + Docker Compose運用)では将来採用候補となる重要機能。jisaku.com 現状の compose.yaml でVolume Mountだけでもhot reloadは実現できているが、Watch機能採用で1)複数Service同時Hot Reload、2)Dockerfile変更時のAuto Rebuild、3).env変更時のRestart自動化のメリット得られる。Hono on Bun は bun run --watch で本体でHot Reload対応するが、Docker内で動作させる場合はDocker Compose Watch + bun --watch の二重Watch構成で確実な開発体験を構築可能。Tilt(¥フリー Apache 2.0)・Skaffold等の Kubernetes開発ツールに比べて、Docker Compose Watch は単一ツールで完結する点が魅力で、Kubernetes採用しないMonolith/Mini-Microservices開発には最適解。一方、Production環境での Watch機能利用は非推奨、docker compose up(Watch なし)で安定運用する。File Watch のオーバーヘッドはinotify Native実装で極小、CPU使用率向上はほぼなし。MacOS環境ではFSEvents経由、Linux ではinotify、Windowsは ReadDirectoryChangesW 経由で OS Native Watcher を活用、Cross-platform対応完備。

関連用語との違い

Volume Mount + Hot Reloadとの違い: Volume Mount は Hot Reloadフレームワーク(webpack-dev-server/uvicorn --reload等)に依存、Compose Watchは標準化されたAuto Sync+Rebuild+Restart の3Action型。Compose Watchの方が宣言的+Multi-Container対応で柔軟。 Tiltとの違い: Tilt(2018年〜)は Kubernetes 開発ツール、Compose Watchは Docker Compose 専用。Kubernetes 採用なら Tilt、Docker Compose 採用なら Compose Watch。学習曲線も Tilt(Tiltfile Starlark)より Compose Watch(yaml)が低い。

よくある質問(FAQ)

Q1: Volume Mount + nodemon と Docker Compose Watch どちらを選ぶ? A: 単純なHot Reloadのみなら Volume Mount + nodemon で十分、Multi-Container対応 + Dockerfile変更時のAuto Rebuild + 複雑なPath Pattern対応 → Compose Watch。Compose 2.29+ 利用環境なら Watch 採用がより現代的。

Q2: Watch機能のCPU使用率は? A: 極小。inotify Native実装でファイル変更通知のみ受信、Polling型(watchman等)よりはるかに効率的。1000ファイル監視でCPU使用率1%未満、Battery駆動 Mac でも問題なし。

Q3: ignoreパターンは正規表現対応? A: gitignore互換のglobパターン+!否定構文対応。**/*.test.js(全test files)、!src/**/*.test.js(srcのtest除外)、node_modules/(全node_modules)等の柔軟な指定可能。正規表現は非対応、glob で十分。

まとめ

  • Docker Compose Watch = 2024年Docker Compose 2.29+ stable昇格機能
  • compose.yaml develop section watch設定で Auto Sync+Rebuild+Restart
  • Tilt/Skaffold代替+Volume Mount+Hot Reload統合
  • Docker Desktop 4.27+標準同梱、Production-grade品質
  • Microservices開発の生産性向上、Kubernetes不採用構成に最適
この記事について
カテゴリーソフトウェア
難易度中級
作成日2026/5/5