setup-compose-stack
À propos
Cette compétence génère des configurations Docker Compose pour des modèles d'applications multi-services courants, tels que des applications web avec bases de données, caches et processus d'arrière-plan. Elle intègre des fonctionnalités prêtes pour la production, notamment des volumes nommés, des contrôles de santé, une gestion des dépendances et une prise en charge des variables d'environnement. Les développeurs doivent l'utiliser pour créer rapidement des environnements conteneurisés reproductibles, que ce soit pour le développement, les tests ou le déploiement.
Installation rapide
Claude Code
Recommandé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-stackCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
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
Dépôt GitHub
Compétences associées
railway-docs
DocumentationCette compétence récupère la documentation actuelle de Railway pour répondre aux questions sur les fonctionnalités, le fonctionnement ou des URL spécifiques de la documentation. Elle garantit que les développeurs reçoivent des informations précises et à jour directement depuis les sources officielles de Railway. Utilisez-la lorsque les utilisateurs demandent comment fonctionne Railway ou font référence à la documentation de Railway.
n8n-code-python
DocumentationCette compétence Claude offre un accompagnement expert pour écrire du code Python dans les nœuds Code de n8n, en particulier pour utiliser la bibliothèque standard de Python et travailler avec la syntaxe spéciale de n8n comme `_input`, `_json` et `_node`. Elle aide les développeurs à comprendre les limites de Python dans n8n et recommande d'utiliser JavaScript pour la plupart des workflows, tout en proposant des solutions Python pour des besoins spécifiques de transformation de données.
archon
DocumentationLa compétence Archon offre une recherche sémantique alimentée par RAG et une gestion de projet via une API REST. Utilisez-la pour interroger la documentation, gérer des projets/tâches hiérarchiques et effectuer de la recherche de connaissances avec des capacités de téléchargement de documents. Priorisez toujours Archon en premier lors de la recherche dans une documentation externe avant d'utiliser d'autres sources.
n8n-code-javascript
DocumentationCette compétence Claude fournit des conseils d'expert pour écrire du code JavaScript dans les nœuds Code d'n8n. Elle couvre la syntaxe essentielle spécifique à n8n comme les variables `$input`/`$json`, les assistants HTTP et la gestion des DateTime, tout en résolvant les erreurs courantes. Utilisez-la lors du développement de workflows n8n nécessitant un traitement JavaScript personnalisé dans les nœuds Code.
