🦀 ClawHub
Docker Compose
by @ivangdavila
Define multi-container applications with proper dependency handling, networking, and volume management.
TERMINAL
clawhub install docker-compose📖 About This Skill
name: Docker Compose description: Define multi-container applications with proper dependency handling, networking, and volume management. metadata: {"clawdbot":{"emoji":"🐳","requires":{"anyBins":["docker-compose","docker"]},"os":["linux","darwin","win32"]}}
depends_on Ready Condition
depends_on: alone only waits for container start—service likely not ready yetdepends_on:
db:
condition: service_healthy
service_healthy failsHealthcheck start_period
healthcheck:
test: ["CMD", "pg_isready"]
start_period: 30s
start_period: initial grace period—health failures don't count during this timeVolume Destruction
docker compose down preserves volumesdocker compose down -v DELETES ALL VOLUMES—data loss-v often added by habit from tutorials—catastrophic in productiondown; anonymous volumes deleted on downResource Limits in Development
deploy:
resources:
limits:
memory: 512M
.dockerignore
node_modules, .git, secrets copied into image.gitignore syntax—create at same level as Dockerfile.git, node_modules, .env, *.log, build artifactsOverride File Pattern
docker-compose.yml: base config that works everywheredocker-compose.override.yml: auto-loaded, development-specific (mounts, ports)docker compose -f docker-compose.yml -f docker-compose.prod.yml upProfiles for Optional Services
services:
mailhog:
profiles: [dev]
docker compose up--profile devEnvironment Variable Precedence
1. Shell environment (highest)
2. .env file in compose directory
3. env_file: directive
4. environment: in compose file (lowest for that var)
.env must be exactly .env—.env.local not auto-loadeddocker compose config—shows resolved values