Docker Composeは、複数コンテナの連携をYAMLでまとめて管理できる強力なツールです。本記事では、開発・運用で役立つDocker Composeの便利な使い方を10項目に絞って紹介します。
1. 基本のup / downコマンド
docker compose up -d # バックグラウンド起動
docker compose down # コンテナ削除
docker compose down -v # ボリュームも削除(クリーン状態)
2. 特定サービスだけ起動
docker compose up -d db
docker compose up -d web db
docker compose logs -f web
3. .envファイルで環境変数管理
同じディレクトリの.envを自動読み込み。${VAR}形式でcompose.yamlから参照できます。
# .env
DB_PASSWORD=secret
# compose.yaml
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
4. profilesでサービスを選択的に起動
services:
app:
image: my-app
cypress:
image: cypress
profiles: [test]
# 通常起動ではcypressは起動しない
docker compose up
# テスト時のみ
docker compose --profile test up
5. ヘルスチェックで起動順序を制御
services:
db:
image: mysql:8
healthcheck:
test: ["CMD", "mysqladmin", "ping"]
interval: 5s
app:
depends_on:
db:
condition: service_healthy
6. 開発用と本番用の上書き
docker compose -f compose.yaml -f compose.dev.yaml up
差分だけ追加で読み込めるので、開発時のみマウントやポート公開を行うといった切り替えが容易です。
7. exec / run でコンテナ内コマンド実行
docker compose exec app bash # 稼働中のサービスへ
docker compose run --rm app npm test # 一時的にコンテナを立てて実行
8. ネットワーク・ボリュームの命名
networks:
shared:
name: shared-network
external: true # 既存のネットワークに参加
9. logsの便利オプション
docker compose logs -f --tail=100 app
docker compose logs --since=10m
10. buildでローカルからイメージ作成
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
args:
NODE_VERSION: 20
まとめ
Docker Composeは「複数コンテナの一括管理」だけでなく、プロファイル・ヘルスチェック・オーバーライドなど実践的な機能が豊富です。開発と本番の差分を最小化しつつ、運用しやすい環境を構築できます。今回紹介した10項目から、自プロジェクトに合うものを取り入れてみてください。