スキル一覧に戻る

setup-compose-stack

pjt222
更新日 Yesterday
2 閲覧
17
2
17
GitHubで表示
ドキュメントapi

について

このスキルは、データベース、キャッシュ、バックグラウンドワーカーを備えたウェブアプリケーションなど、一般的なマルチサービスアプリケーションパターン向けのDocker Compose構成を生成します。名前付きボリューム、ヘルスチェック、依存関係管理、環境変数処理といった本番環境対応の機能を実装しています。開発者はこれを使用して、開発、テスト、またはデプロイメントシナリオ向けの再現可能なコンテナ化環境を迅速に作成できます。

クイックインストール

Claude Code

推奨
メイン
npx skills add pjt222/agent-almanac -a claude-code
プラグインコマンド代替
/plugin add https://github.com/pjt222/agent-almanac
Git クローン代替
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-compose-stack

このコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします

ドキュメント

Set Up Compose Stack

Configure Docker Compose for multi-service stacks w/ DBs, caches, workers.

Use When

  • Web app + DB|cache
  • Dev env w/ multi services
  • Bg workers + API
  • Reproducible multi-service envs

In

  • Required: App service (lang, port, entry)
  • Required: Supporting services (DB, cache, queue)
  • Optional: Dev vs prod config
  • Optional: Existing Dockerfiles

Do

Step 1: Core Stack

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://appuser:apppass@postgres:5432/appdb
      REDIS_URL: redis://redis:6379
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_started
    restart: unless-stopped

  postgres:
    image: postgres:16
    environment:
      POSTGRES_DB: appdb
      POSTGRES_USER: appuser
      POSTGRES_PASSWORD: apppass
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U appuser -d appdb"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redisdata:/data

volumes:
  pgdata:
  redisdata:

docker compose up starts all, app waits for healthy DB.

Step 2: Health Checks

Enable depends_on w/ condition: service_healthy:

services:
  postgres:
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U appuser -d appdb"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 5

  app:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 10s

Step 3: Networks

services:
  app:
    networks:
      - frontend
      - backend

  postgres:
    networks:
      - backend

  nginx:
    networks:
      - frontend
    ports:
      - "80:80"

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

Isolates DB from external; app bridges both.

Step 4: Env Vars

.env (git-ignored):

POSTGRES_PASSWORD=secure_password_here
APP_SECRET=your_secret_key

Reference:

services:
  postgres:
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
  app:
    env_file:
      - .env

.env.example (committed):

POSTGRES_PASSWORD=changeme
APP_SECRET=changeme

Step 5: Worker Services

services:
  worker:
    build:
      context: .
      dockerfile: Dockerfile
    command: ["node", "src/worker.js"]
    environment:
      DATABASE_URL: postgres://appuser:apppass@postgres:5432/appdb
      REDIS_URL: redis://redis:6379
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_started
    restart: unless-stopped
    deploy:
      replicas: 2

Step 6: Profiles for Optional

services:
  app:
    # always starts
    build: .

  mailhog:
    image: mailhog/mailhog
    ports:
      - "8025:8025"
    profiles:
      - dev

  adminer:
    image: adminer
    ports:
      - "8080:8080"
    profiles:
      - dev
# Start core services only
docker compose up

# Start with dev tools
docker compose --profile dev up

Step 7: Override for Dev

docker-compose.override.yml auto-merged:

services:
  app:
    build:
      target: dev
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      NODE_ENV: development
      DEBUG: "app:*"
    command: ["npm", "run", "dev"]

Step 8: Build + Run

# Build all images
docker compose build

# Start in background
docker compose up -d

# View logs
docker compose logs -f app

# Check service status
docker compose ps

# Stop and remove
docker compose down

# Stop and remove volumes (full reset)
docker compose down -v

→ All services start, health checks pass, app connects DB+cache.

If err: docker compose logs <service>. Common: port conflicts, missing env vars, health check timeouts.

Check

  • docker compose up starts w/o errs
  • Health checks pass DB+cache
  • App connects all deps
  • Named volumes persist across restarts
  • .env git-ignored; .env.example committed
  • docker compose down cleanly stops
  • Profiles separate dev from prod

Traps

  • No health checks: depends_on w/o condition: service_healthy only waits for container start, not ready.
  • Hardcoded pwds: .env|Docker secrets. Never commit pwds.
  • Volume mount overwrites: Mounting .:/app overwrites image's node_modules. Anonymous volume: /app/node_modules.
  • Port conflicts: docker compose ps + lsof -i :<port>.
  • version: key: Compose V2 ignores. Omit for modern.
  • WSL path issues: /mnt/c/... for Windows dirs from WSL.

  • setup-docker-compose — R-specific configs
  • create-dockerfile — write Dockerfile
  • create-multistage-dockerfile — optimized images
  • configure-nginx — add Nginx reverse proxy

GitHub リポジトリ

pjt222/agent-almanac
パス: i18n/caveman-ultra/skills/setup-compose-stack
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

関連スキル

railway-docs

ドキュメント

このスキルは、Railwayの機能や仕様、特定のドキュメントURLに関する質問に答えるために、最新のRailwayドキュメントを取得します。開発者がRailwayの公式情報源から正確かつ最新の情報を直接受け取れるようにします。ユーザーがRailwayの動作方法について尋ねたり、Railwayドキュメントを参照する際にご利用ください。

スキルを見る

n8n-code-python

ドキュメント

このClaudeスキルは、n8nのコードノードでPythonコードを記述するための専門的なガイダンスを提供します。具体的には、Pythonの標準ライブラリの使用方法や、`_input`、`_json`、`_node`といったn8n独自の構文の扱い方を解説します。n8n環境内におけるPythonの制限事項を開発者が理解できるよう支援し、ほとんどのワークフローではJavaScriptの使用を推奨しながらも、特定のデータ変換ニーズに対応するPythonソリューションを提案します。

スキルを見る

archon

ドキュメント

Archonスキルは、RAGを活用したセマンティック検索とプロジェクト管理をREST APIを通じて提供します。ドキュメントの検索、階層的なプロジェクト/タスクの管理、ドキュメントアップロード機能を備えたナレッジ検索の実行にご利用いただけます。外部ドキュメントを検索する際は、他の情報源を利用する前に常にArchonを最優先で使用してください。

スキルを見る

n8n-code-javascript

ドキュメント

このClaudeスキルは、n8nのCodeノードでJavaScriptコードを書くための専門的なガイダンスを提供します。`$input`/`$json`変数、HTTPヘルパー、DateTime処理などの重要なn8n固有の構文を網羅し、一般的なエラーのトラブルシューティングも行います。CodeノードでカスタムJavaScript処理を必要とするn8nワークフローを開発する際にご利用ください。

スキルを見る