章: 第2章: Docker Compose実践
毎回 docker run を3回叩くのは終わりにしよう
アプリ・DB・キャッシュを別々に docker run で起動し、毎回コマンドを打つのは非効率です。コマンドが長くなるほど間違いも増えます。
Docker Composeを使えば、複数サービスの定義を1つのYAMLファイルにまとめ、docker compose up 1コマンドで全サービスを起動できます。停止も docker compose down の1コマンドです。
Composeを使うと何が変わるか
Composeは「サービスの構成をコードで管理する」ツールです。YAMLに定義を書くことで次が実現します。
- チーム全員が同じ構成で起動できる(環境差異の排除)
- ビルド・起動・停止・ログ確認がすべて
docker composeサブコマンドで完結 - サービス間の依存関係(起動順)も定義できる
よく使うComposeコマンドの比較
| コマンド | 動作 |
docker compose up -d |
バックグラウンドで全サービス起動 |
docker compose down |
全サービス停止・コンテナ削除 |
docker compose down -v |
ボリュームも合わせて削除 |
docker compose logs -f |
全サービスのログをリアルタイム表示 |
docker compose ps |
サービスの状態確認 |
docker compose exec app bash |
コンテナ内でシェル起動 |
チェックポイント: 開発中は
docker compose up -dで起動し、docker compose logs -fでログを確認する流れが基本です。down -vはボリュームも消えるので本番環境では慎重に使いましょう。
最小構成のサンプル
services:
app:
build: .
ports:
- "8080:8080"
db:
image: mysql:8.4
environment:
MYSQL_DATABASE: blog
MYSQL_ROOT_PASSWORD: secret
app と db の2サービス構成です。まずこの最小構成を動かして、起動・停止・ログ確認を一通り試してみましょう。
まとめ & 次のステップ
- Composeは複数サービスを1つのYAMLで管理し、1コマンドで起動・停止できる
- まず
app + dbの2サービス構成から始めるのがコツ docker compose logs -fでトラブル時のログ確認を習慣にするdown -vはボリュームも削除されるため意図的に使う
次回は「環境変数と.env管理」を学びます。パスワードや設定値をYAMLに直書きしない、安全な環境変数管理の方法を整理します。