mcpField
D
docker-compose-setup

docker-compose-setup

github.com/pluginagentmarketplaceクラウド・DevOps2209 回インストール43 週間前に更新
リポジトリ

docker-compose-setup について

docker-compose-setupは、開発・本番環境向けのDocker Compose設定を設計するスキルです。サービスの依存関係や環境管理、トラブルシューティングを扱います。

主な機能

  1. 01サービスと依存関係の設定
  2. 02ヘルスチェックの設定
  3. 03環境変数と設定上書きの管理
  4. 04サービスプロファイルの利用
  5. 05Composeファイルの検証と問題解決

活用シーン

  1. 01開発・本番環境向けComposeファイルの作成
  2. 02開発環境と本番環境の設定分離
  3. 03サービス起動やヘルスチェックの問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-docker --skill docker-compose-setup

インストール後、Claude Code で/docker-compose-setupを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
docker-compose-template.yaml
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

詳細

Docker Compose セットアップスキル

サービスの依存関係、ヘルスチェック、環境管理を活用し、複数コンテナのアプリケーションオーケストレーションに Docker Compose を使いこなします。

目的

開発環境と本番環境向けに、適切なサービスオーケストレーションを備えた Docker Compose ファイルを設計・設定します。

パラメーター

パラメーター型必須デフォルト説明
services配列いいえ-設定するサービスの一覧
environment列挙型いいえdevdev/staging/prod
include_monitoringブール値いいえfalse監視サービスを追加します

最新の Compose ファイル(2024-2025)

注:version フィールドは非推奨です。services: から直接始めてください。

services:
  frontend:
    build:
      context: ./frontend
      target: production
    ports:
      - "80:80"
    depends_on:
      backend:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/health"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: unless-stopped

  backend:
    build: ./backend
    expose:
      - "3000"
    environment:
      DATABASE_URL: postgres://user:${DB_PASSWORD}@database:5432/app
    depends_on:
      database:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 10s
      timeout: 5s
      retries: 5

  database:
    image: postgres:16-alpine
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

volumes:
  db_data:

環境管理

ベース + オーバーライドパターン
# docker-compose.yaml (base)
services:
  app:
    image: myapp:latest

# docker-compose.override.yaml (dev - auto-loaded)
services:
  app:
    build: .
    volumes:
      - ./src:/app/src
    environment:
      - DEBUG=true

# docker-compose.prod.yaml (production)
services:
  app:
    deploy:
      replicas: 3
    restart: always
# Development (loads override automatically)
docker compose up

# Production
docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d
環境変数
# .env file (auto-loaded)
DB_PASSWORD=secret123
APP_VERSION=1.2.3
# Using in compose
environment:
  - DB_PASSWORD=${DB_PASSWORD}
  - VERSION=${APP_VERSION:-latest}  # Default value

サービスプロファイル

services:
  app:
    image: myapp

  # Only with --profile debug
  debugger:
    image: debug-tools
    profiles:
      - debug

  # Only with --profile testing
  test-db:
    image: postgres:alpine
    profiles:
      - testing
docker compose up                     # app only
docker compose --profile debug up     # app + debugger

よく使うコマンド

# Start services
docker compose up -d

# Rebuild and start
docker compose up -d --build

# View logs
docker compose logs -f backend

# Scale service
docker compose up -d --scale backend=3

# Stop and clean
docker compose down -v

# Validate config
docker compose config

エラー処理

よくあるエラー
エラー原因解決策
undefined service依存関係が不足していますサービスを定義します
yaml syntax errorインデントYAML を修正します
port already in useポートの競合ポートを変更します
healthcheck failingサービスの準備ができていませんstart_period を増やします
フォールバック戦略
  1. docker compose config で検証します
  2. サービスを個別に起動します
  3. --no-deps を使用して依存関係をスキップします

トラブルシューティング

デバッグ用チェックリスト
  • 有効な YAML ですか? docker compose config
  • イメージを利用できますか? docker compose pull
  • 依存関係は正常ですか? ヘルスチェックを確認してください
  • 環境は設定されていますか? .env ファイルを確認してください
ヘルスチェックのデバッグ
# Check health status
docker inspect --format='{{json .State.Health}}' <container>

# View health logs
docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' <container>

使用方法

Skill("docker-compose-setup")

関連スキル

  • docker-networking
  • docker-volumes
  • docker-production

コメント