From docker-specialist
Generates Docker Compose configurations for multi-container apps with services, networks, volumes, health checks, dependencies, and environment setup. Useful for dev/prod orchestration.
npx claudepluginhub mwguerra/claude-code-plugins --plugin docker-specialistThis skill uses the workspace's default tool permissions.
This skill generates Docker Compose configurations for multi-container applications. It creates properly structured compose files with:
Generates docker-compose.yml files for multi-container apps with services, networks, volumes, health checks, resource limits, and environment overrides for dev/prod.
Defines and runs multi-container Docker applications with Docker Compose YAML, covering services, volumes, commands, environment variables, health checks, and resource limits.
Configures Docker Compose stacks for web apps with Postgres, Redis, caches, workers, volumes, networks, health checks, depends_on, and profiles. Use for dev environments, multi-service orchestration, or reproducible setups.
Share bugs, ideas, or general feedback.
This skill generates Docker Compose configurations for multi-container applications. It creates properly structured compose files with:
Use this skill when:
Gather information about:
Read relevant documentation:
03-compose-fundamentals.md for structure04-networking.md for networks05-databases.md for database services06-services.md for dependencies08-volumes.md for persistenceCreate compose file following best practices:
# Modern compose (no version field)
services:
app:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
depends_on:
db:
condition: service_healthy
networks:
- frontend
- backend
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_NAME}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- backend
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 10s
timeout: 5s
retries: 5
volumes:
postgres_data:
networks:
frontend:
backend:
internal: true
services:
web:
build: .
ports:
- "80:80"
depends_on:
- api
services:
api:
build: ./api
expose:
- "3000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/app
depends_on:
db:
condition: service_healthy
services:
db:
image: postgres:16-alpine
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
retries: 5
services:
redis:
image: redis:7-alpine
command: redis-server --appendonly yes
volumes:
- redis_data:/data
services:
worker:
build: .
command: npm run worker
depends_on:
- db
- redis
networks:
backend:
internal: true # No external access
networks:
proxy:
external: true
name: traefik_proxy
volumes:
postgres_data:
volumes:
- ./src:/app/src
volumes:
- /app/node_modules
environment:
- NODE_ENV=production
env_file:
- .env
environment:
- DB_HOST=${DB_HOST:-localhost}
Generated compose file includes: