コンテンツにスキップ

Docker Compose 基本

Compose は、複数コンテナをまとめてローカル実行するための定義ファイル。

アプリ、DB、Redis のような複数サービスを一緒に立ち上げたいときに便利。

どういう場面で使うか

  • Web アプリと DB をまとめてローカル起動したいとき
  • チーム全員で同じ開発環境を揃えたいとき
  • 起動コマンドを毎回手で並べたくないとき
  • 検証用の複数コンテナ環境をすぐ作りたいとき
services:
  app:
    build: .
    ports:
      - "8000:8000"
    environment:
      - LOG_LEVEL=info
    depends_on:
      - db
  db:
    image: postgres:16
    volumes:
      - pg:/var/lib/postgresql/data
volumes:
  pg: {}

まず押さえたいこと

  • 起動コマンドを毎回長く書かなくてよい
  • 複数サービスの依存関係をまとめて管理できる
  • チームでローカル開発環境を揃えやすい
  • 基本的には本番オーケストレーションというより、開発・検証用途でよく使う

よく見る項目

  • services: 起動するコンテナ群
  • build: Dockerfile からビルド
  • image: 既存イメージを利用
  • ports: ホストとコンテナのポート対応
  • environment: 環境変数
  • volumes: 永続データやソースマウント
  • depends_on: 起動順の補助

よく使うコマンド

docker compose up
docker compose up -d
docker compose down
docker compose logs -f
docker compose ps

最初によく使う流れ

  1. docker compose up -d でまとめて起動
  2. docker compose ps で状態確認
  3. docker compose logs -f でログ確認
  4. docker compose down で終了

メモ

  • depends_on は起動順の補助であって、アプリの準備完了までは保証しない
  • 開発環境では bind mount、本番寄りではイメージ実行、で使い分けることが多い
  • 本番運用の基盤というより、まずはローカル開発・検証用途として理解する
  • まずは 2〜3 サービス構成を自分で起動できれば十分