Docker Compose
複数のコンテナをまとめて定義・起動するツールで、ローカル開発環境の構築に使われる
Docker開発環境
Docker Compose とは
Docker Compose は、複数のコンテナ (アプリ、DB、キャッシュ) を docker-compose.yml で定義し、docker compose up で一括起動するツールである。ローカル開発環境で「アプリ + PostgreSQL + Redis」のような構成を簡単に再現できる。
基本的な設定
# docker-compose.yml
services:
app:
build: .
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://admin:secret@db:5432/myapp
REDIS_URL: redis://cache:6379
depends_on:
db:
condition: service_healthy
volumes:
- .:/app
db:
image: postgres:16
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: myapp
volumes:
- db-data:/var/lib/postgresql/data
healthcheck:
test: pg_isready -U admin
interval: 5s
cache:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
db-data:
コマンド
# 起動
docker compose up -d
# ログ
docker compose logs -f app
# 停止
docker compose down
# ボリュームも削除
docker compose down -v
# 再ビルド
docker compose up -d --build
Kubernetes との違い
| 観点 | Docker Compose | Kubernetes |
|---|---|---|
| 用途 | ローカル開発 | 本番環境 |
| スケーリング | 手動 (scale) |
自動 (HPA) |
| ヘルスチェック | 基本的 | 高度 (liveness, readiness) |
| ネットワーク | サービス名で接続 | Service + DNS |
| 設定ファイル | docker-compose.yml |
複数の YAML マニフェスト |
ローカル開発のパターン
ホットリロード
services:
app:
build: .
volumes:
- .:/app # ソースコードをマウント
- /app/node_modules # node_modules はコンテナ内のものを使う
command: npm run dev # ホットリロード付きで起動
DynamoDB Local
services:
dynamodb:
image: amazon/dynamodb-local
ports:
- "8000:8000"
command: -jar DynamoDBLocal.jar -sharedDb
本番環境では使わない
Docker Compose はローカル開発用。本番環境では ECS、EKS、Fargate を使う。
| 環境 | ツール |
|---|---|
| ローカル開発 | Docker Compose |
| 本番 (サーバーレス) | Lambda + SAM |
| 本番 (コンテナ) | ECS / EKS |
Docker Compose の理解を深めるには関連書籍が参考になる。