MCP HubMCP Hub
Volver a habilidades

setup-compose-stack

pjt222
Actualizado Yesterday
2 vistas
17
2
17
Ver en GitHub
Metaapi

Acerca de

Esta Skill de Claude genera configuraciones de Docker Compose para patrones comunes de aplicaciones web multi-servicio. Configura stacks con aplicaciones web, bases de datos, cachés y workers, incluyendo redes, volúmenes, comprobaciones de salud y gestión de variables de entorno. Úsala al crear entornos de desarrollo, orquestar workers en segundo plano con APIs, o establecer configuraciones multi-servicio reproducibles entre equipos.

Instalación rápida

Claude Code

Recomendado
Principal
npx skills add pjt222/agent-almanac -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativo
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-compose-stack

Copia y pega este comando en Claude Code para instalar esta habilidad

Documentación


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 up startet alle Dienste fehlerfrei
  • Health-Checks bestehen fuer Datenbank und Cache
  • Anwendung verbindet sich mit allen abhaengigen Diensten
  • Benannte Volumes persistieren Daten ueber Neustarts hinweg
  • .env ist git-ignoriert; .env.example ist eingecheckt
  • docker compose down stoppt alles sauber
  • Profile trennen Entwicklungstools von Produktionsdiensten

Haeufige Fehler

  • Keine Health-Checks: depends_on ohne condition: service_healthy wartet 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 .:/app ueberschreibt im Image gebaute node_modules. Ein anonymes Volume verwenden: /app/node_modules.
  • Port-Konflikte: docker compose ps und lsof -i :<port> auf Konflikte pruefen.
  • version:-Schluessel: Compose V2 ignoriert den version:-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-Konfigurationen
  • create-dockerfile - Das Dockerfile schreiben, das Compose referenziert
  • create-multistage-dockerfile - Optimierte Images fuer den Stack bauen
  • configure-nginx - Nginx-Reverse-Proxy zum Stack hinzufuegen

Repositorio GitHub

pjt222/agent-almanac
Ruta: i18n/de/skills/setup-compose-stack
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Habilidades relacionadas

content-collections

Meta

Esta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.

Ver habilidad

polymarket

Meta

Esta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.

Ver habilidad

creating-opencode-plugins

Meta

Esta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.

Ver habilidad

sglang

Meta

SGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.

Ver habilidad