docker-compose
✓Verified·Scanned 2/18/2026
Define multi-container applications with proper dependency handling, networking, and volume management.
from clawhub.ai·v22c7b78·2.6 KB·0 installs
Scanned from 1.0.0 at 22c7b78 · Transparency log ↗
$ vett add clawhub.ai/ivangdavila/docker-compose
depends_on Ready Condition
depends_on:alone only waits for container start—service likely not ready yet- Add healthcheck + condition for actual readiness:
depends_on:
db:
condition: service_healthy
- Without healthcheck defined on target service,
service_healthyfails
Healthcheck start_period
healthcheck:
test: ["CMD", "pg_isready"]
start_period: 30s
start_period: initial grace period—health failures don't count during this time- Slow-starting services (databases, Java apps) need adequate start_period
- Without it, container marked unhealthy before it finishes initializing
Volume Destruction
docker compose downpreserves volumesdocker compose down -vDELETES ALL VOLUMES—data loss-voften added by habit from tutorials—catastrophic in production- Named volumes survive
down; anonymous volumes deleted ondown
Resource Limits in Development
deploy:
resources:
limits:
memory: 512M
- Set limits during development—catches memory issues early
- Unlimited container can consume all host memory—kills other processes
- Copy limits to production config—don't discover limits in prod
.dockerignore
- Without it:
node_modules,.git, secrets copied into image - Mirrors
.gitignoresyntax—create at same level as Dockerfile - Large build context = slow builds, large images, potential security issues
- At minimum:
.git,node_modules,.env,*.log, build artifacts
Override File Pattern
docker-compose.yml: base config that works everywheredocker-compose.override.yml: auto-loaded, development-specific (mounts, ports)- Production:
docker compose -f docker-compose.yml -f docker-compose.prod.yml up - Keep secrets and environment-specific config in override files, not base
Profiles for Optional Services
services:
mailhog:
profiles: [dev]
- Services with profiles don't start by default—cleaner
docker compose up - Enable with
--profile dev - Use for: test databases, debug tools, mock services, admin interfaces
Environment Variable Precedence
- Shell environment (highest)
.envfile in compose directoryenv_file:directiveenvironment:in compose file (lowest for that var)
.envmust be exactly.env—.env.localnot auto-loaded- Debug with
docker compose config—shows resolved values