Docker Compose
複数のコンテナをまとめて定義 / 起動するツールで、ローカル開発環境の構築に使われる
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 との違い
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 はそれらと組み合わせるサーバーレスの実行基盤で、ECS/EKS の代わりになるものではない (もう一方の選択肢が EC2 での実行)。
| 環境 | ツール |
|---|---|
| ローカル開発 | Docker Compose |
| 本番 (サーバーレス) | Lambda + SAM |
| 本番 (コンテナ) | ECS / EKS |
Docker Compose の理解を深めるには関連書籍が参考になる。
この記事は役に立ちましたか?
関連用語
コンテナ
アプリケーションとその依存関係をパッケージ化し、環境に依存しない一貫した実行環境を提供する仮想化技術
Dockerfile
Docker イメージのビルド手順を記述するテキストファイルで、アプリケーションの実行環境を再現可能にする
Dev Container
Docker コンテナ内に開発環境を定義し、チーム全員が同一の環境で開発できる仕組み
開発/本番一致
Twelve-Factor App の原則で、開発 / ステージング / 本番環境の差異を最小化する
コンテナオーケストレーション
コンテナのデプロイ、スケーリング、ネットワーキングを自動管理するプラットフォーム
Kubernetes
コンテナのデプロイ、スケーリング、管理を自動化するオープンソースのオーケストレーションプラットフォーム
関連する記事
Linux 本ガイド - コマンドライン / しくみ / 性能の 3 層で選ぶ技術書
Linux を学ぶ技術書の選び方を 3 層 (コマンドラインの操作 → カーネルのしくみ → 性能と運用) で整理。新しい Linux の教科書や [試して理解] Linux のしくみなどの定番書の使い分けと、学ぶ順番を解説します。
技術書の読む順番戦略 - 複数冊を組み合わせて理解を加速させる
技術書を 1 冊ずつ読むのではなく、複数冊を戦略的に組み合わせることで、1 冊では届かない理解の深さと広さに達する方法を解説します。
Web 開発本ガイド - フロントエンドからバックエンドまで
Web 開発の全体像を学べる技術書の選び方と学習マップを紹介。フレームワーク本の賞味期限問題と公式ドキュメントとの使い分けも解説します。