Docker Composeでは,compose.yaml に定義した複数のサービスをまとめて操作できる.
普段の開発でよく使うものを,作業の流れに沿ってまとめておく.<service> には web や db など,Composeファイルに書いたサービス名を指定する.
現在のComposeでは,ハイフン付きの docker-compose ではなく,Docker CLIに統合された docker compose を使う.
設定を確認する
1docker compose config
環境変数の展開や複数ファイルの結合後に,最終的に適用される設定を表示する.起動前にComposeファイルの記述を確認したいときに便利だ.
サービスを起動する
フォアグラウンドで起動し,各サービスのログをまとめて表示する.
1docker compose up
Ctrl+C で停止できる.バックグラウンドで起動する場合は -d を付ける.
1docker compose up -d
Dockerfileや依存関係を変更したあと,イメージを作り直して起動する.
1docker compose up -d --build
状態を見る
1docker compose ps
サービスごとのコンテナ名,状態,公開ポートを確認できる.停止中のコンテナも含める場合は -a を付ける.
1docker compose ps -a
ログを見る
すべてのサービスについて,直近100行からログを追う.
1docker compose logs --tail 100 -f
特定サービスだけに絞る場合は,末尾にサービス名を付ける.
1docker compose logs --tail 100 -f <service>
追跡を終了するときは Ctrl+C を押す.
コンテナの中で操作する
起動中のサービスコンテナでシェルを開く.
1docker compose exec <service> sh
イメージにBashが入っている場合は sh の代わりに bash を使える.
シェルへ入らず,コマンドだけ実行することもできる.
1docker compose exec web npm test
exec は,すでに起動しているコンテナ内でコマンドを実行する.
一時コンテナで実行する
1docker compose run --rm <service> <command>
たとえば,マイグレーションを実行するなら次のようになる.
1docker compose run --rm web npm run migrate
run はサービス設定を使って新しい一時コンテナを作る.起動済みコンテナを使う exec とは動作が異なる.--rm を付けると,コマンド終了後に一時コンテナが削除される.
停止,再開,再起動する
サービスを停止する.コンテナは削除されない.
1docker compose stop
停止したサービスを再開する.
1docker compose start
すべてのサービスを再起動する.
1docker compose restart
特定サービスだけを再起動する場合は,サービス名を付ける.
1docker compose restart <service>
終了して削除する
コンテナとネットワークを停止して削除する.
1docker compose down
Composeファイルから削除されたサービスのコンテナも片付ける場合は,次を使う.
1docker compose down --remove-orphans
名前付きボリュームも含めて削除する場合は --volumes を付ける.
1docker compose down --volumes
データベースなどの永続データも消える可能性があるため,実行前にComposeファイルのボリューム定義を確認する.
イメージを取得,ビルドする
Composeで使うイメージを取得する.
1docker compose pull
Composeファイルの定義に従ってイメージをビルドする.
1docker compose build
キャッシュを使わずに作り直す場合は --no-cache を付ける.
1docker compose build --no-cache
よく使う流れ
1# ビルドして起動する 2docker compose up -d --build 3 4# 状態を見る 5docker compose ps 6 7# webサービスのログを追う 8docker compose logs --tail 100 -f web 9 10# webサービスのコンテナ内へ入る 11docker compose exec web sh 12 13# 終了して片付ける 14docker compose down
まずは up,ps,logs,exec,down の5つを覚えておけば,Composeを使った日常的な開発を進められる.