Docker Composeの便利な使い方10選

インフラ・クラウド

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項目から、自プロジェクトに合うものを取り入れてみてください。