setup-compose-stack
について
このClaudeスキルは、一般的なマルチサービスWebアプリケーションパターン向けのDocker Compose構成を生成します。Webアプリケーション、データベース、キャッシュ、ワーカーを含むスタックを、ネットワーク設定、ボリューム管理、ヘルスチェック、環境管理と共に構築します。開発環境の作成、APIと連携するバックグラウンドワーカーのオーケストレーション、チーム間で再現可能なマルチサービス環境の確立にご利用ください。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-compose-stackこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
name: setup-compose-stack description: > Konfiguriere allgemeine Docker-Compose-Stacks fuer gaengige Anwendungsmuster. Umfasst Web-App + Datenbank + Cache + Worker-Dienste, benannte Volumes, Netzwerke, Health-Checks, depends_on, Umgebungsverwaltung und Profile. Verwende diesen Skill beim Betrieb einer Web-App mit Datenbank oder Cache, beim Einrichten einer Entwicklungsumgebung mit mehreren Diensten, beim Orchestrieren von Hintergrund-Workern neben einer API oder beim Erstellen reproduzierbarer Multi-Service-Umgebungen teamuebergreifend. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: intermediate language: Docker tags: docker-compose, orchestration, postgres, redis, multi-service, health-checks locale: de source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16
Compose-Stack einrichten
Docker Compose fuer Multi-Service-Anwendungsstacks mit Datenbanken, Caches und Workern konfigurieren.
Wann verwenden
- Betrieb einer Web-App mit Datenbank und/oder Cache
- Einrichten einer Entwicklungsumgebung mit mehreren Diensten
- Orchestrieren von Hintergrund-Workern neben einer API
- Reproduzierbare Multi-Service-Umgebungen teamuebergreifend benoetigt
Eingaben
- Erforderlich: Anwendungsdienst (Sprache, Port, Einstiegspunkt)
- Erforderlich: Benoetigte unterstuetzende Dienste (Datenbank, Cache, Queue usw.)
- Optional: Entwicklungs- vs. Produktionskonfiguration
- Optional: Vorhandene Dockerfiles fuer benutzerdefinierte Dienste
Vorgehensweise
Schritt 1: Kern-Stack definieren
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:
Erwartet: docker compose up startet alle Dienste, wobei die App auf eine gesunde Datenbank wartet.
Schritt 2: Health-Checks hinzufuegen
Health-Checks ermoeglichen depends_on mit 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
Schritt 3: Netzwerke konfigurieren
services:
app:
networks:
- frontend
- backend
postgres:
networks:
- backend
nginx:
networks:
- frontend
ports:
- "80:80"
networks:
frontend:
driver: bridge
backend:
driver: bridge
Dies isoliert die Datenbank von direktem externen Zugriff, waehrend die App beide Netzwerke verbindet.
Schritt 4: Umgebungsvariablen verwalten
.env-Datei erstellen (git-ignoriert):
POSTGRES_PASSWORD=secure_password_here
APP_SECRET=your_secret_key
In Compose referenzieren:
services:
postgres:
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
app:
env_file:
- .env
.env.example erstellen (in Git eingecheckt):
POSTGRES_PASSWORD=changeme
APP_SECRET=changeme
Schritt 5: Worker-Dienste hinzufuegen
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
Schritt 6: Profile fuer optionale Dienste verwenden
services:
app:
# startet immer
build: .
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025"
profiles:
- dev
adminer:
image: adminer
ports:
- "8080:8080"
profiles:
- dev
# Nur Kerndienste starten
docker compose up
# Mit Entwicklungstools starten
docker compose --profile dev up
Schritt 7: Override fuer Entwicklung erstellen
docker-compose.override.yml wird automatisch zusammengefuehrt:
services:
app:
build:
target: dev
volumes:
- .:/app
- /app/node_modules
environment:
NODE_ENV: development
DEBUG: "app:*"
command: ["npm", "run", "dev"]
Schritt 8: Bauen und Starten
# Alle Images bauen
docker compose build
# Im Hintergrund starten
docker compose up -d
# Logs anzeigen
docker compose logs -f app
# Dienststatus pruefen
docker compose ps
# Stoppen und entfernen
docker compose down
# Stoppen und Volumes entfernen (vollstaendiger Reset)
docker compose down -v
Erwartet: Alle Dienste starten, Health-Checks bestehen, App verbindet sich mit Datenbank und Cache.
Bei Fehler: docker compose logs <service> pruefen. Haeufige Probleme: Port-Konflikte, fehlende Umgebungsvariablen, Health-Check-Timeouts.
Validierung
-
docker compose upstartet alle Dienste fehlerfrei - Health-Checks bestehen fuer Datenbank und Cache
- Anwendung verbindet sich mit allen abhaengigen Diensten
- Benannte Volumes persistieren Daten ueber Neustarts hinweg
-
.envist git-ignoriert;.env.exampleist eingecheckt -
docker compose downstoppt alles sauber - Profile trennen Entwicklungstools von Produktionsdiensten
Haeufige Fehler
- Keine Health-Checks:
depends_onohnecondition: service_healthywartet nur auf Container-Start, nicht auf Bereitschaft. - Hartcodierte Passwoerter in Compose:
.env-Dateien oder Docker Secrets verwenden. Niemals Passwoerter committen. - Volume-Mount ueberschreibt: Das Mounten von
.:/appueberschreibt im Image gebautenode_modules. Ein anonymes Volume verwenden:/app/node_modules. - Port-Konflikte:
docker compose psundlsof -i :<port>auf Konflikte pruefen. version:-Schluessel: Compose V2 ignoriert denversion:-Schluessel. Fuer moderne Setups weglassen.- WSL-Pfad-Probleme:
/mnt/c/...-Pfade verwenden, wenn Windows-Verzeichnisse aus WSL eingehaengt werden.
Verwandte Skills
setup-docker-compose- R-spezifische Docker-Compose-Konfigurationencreate-dockerfile- Das Dockerfile schreiben, das Compose referenziertcreate-multistage-dockerfile- Optimierte Images fuer den Stack bauenconfigure-nginx- Nginx-Reverse-Proxy zum Stack hinzufuegen
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
