setup-compose-stack
Acerca de
Esta habilidad genera configuraciones de Docker Compose para patrones comunes de aplicaciones multi-servicio, como aplicaciones web con bases de datos, cachés y workers en segundo plano. Implementa características listas para producción que incluyen volúmenes nombrados, comprobaciones de salud, gestión de dependencias y manejo de variables de entorno. Los desarrolladores deben usarla para crear rápidamente entornos containerizados reproducibles para escenarios de desarrollo, pruebas o despliegue.
Instalación rápida
Claude Code
Recomendadonpx 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-stackCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
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 upstarts w/o errs - Health checks pass DB+cache
- App connects all deps
- Named volumes persist across restarts
-
.envgit-ignored;.env.examplecommitted -
docker compose downcleanly stops - Profiles separate dev from prod
Traps
- No health checks:
depends_onw/ocondition: service_healthyonly waits for container start, not ready. - Hardcoded pwds:
.env|Docker secrets. Never commit pwds. - Volume mount overwrites: Mounting
.:/appoverwrites image'snode_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 configscreate-dockerfile— write Dockerfilecreate-multistage-dockerfile— optimized imagesconfigure-nginx— add Nginx reverse proxy
Repositorio GitHub
Habilidades relacionadas
railway-docs
DocumentaciónEsta habilidad obtiene la documentación actual de Railway para responder preguntas sobre características, funcionalidad o URLs específicas de documentación. Garantiza que los desarrolladores reciban información precisa y actualizada directamente de las fuentes oficiales de Railway. Úsala cuando los usuarios pregunten cómo funciona Railway o hagan referencia a la documentación de Railway.
n8n-code-python
DocumentaciónEsta Skill de Claude proporciona orientación experta para escribir código Python en los nodos Code de n8n, específicamente para usar la biblioteca estándar de Python y trabajar con la sintaxis especial de n8n como `_input`, `_json` y `_node`. Ayuda a los desarrolladores a comprender las limitaciones de Python dentro de n8n y recomienda usar JavaScript para la mayoría de los flujos de trabajo, mientras ofrece soluciones en Python para necesidades específicas de transformación de datos.
archon
DocumentaciónLa habilidad Archon proporciona búsqueda semántica con tecnología RAG y gestión de proyectos a través de una API REST. Úsala para consultar documentación, gestionar proyectos/tareas jerárquicos y realizar recuperación de conocimiento con capacidades de carga de documentos. Prioriza siempre a Archon en primer lugar al buscar en documentación externa antes de utilizar otras fuentes.
n8n-code-javascript
DocumentaciónEsta habilidad de Claude proporciona orientación experta para escribir código JavaScript en los nodos de Código de n8n. Cubre sintaxis esencial específica de n8n como las variables `$input`/`$json`, ayudantes HTTP y manejo de DateTime, mientras soluciona errores comunes. Úsela al desarrollar flujos de trabajo en n8n que requieran procesamiento personalizado de JavaScript en los nodos de Código.
