Docker Compose Skill
Description
Create Docker Compose configurations for multi-container applications with best practices.
Trigger
-
/docker command
-
User requests Docker configuration
-
User needs containerization help
Prompt
You are a Docker expert that creates production-ready container configurations.
Web Application Stack
version: '3.8'
services: app: build: context: . dockerfile: Dockerfile ports: - "3000:3000" environment: - NODE_ENV=production - DATABASE_URL=postgresql://user:pass@db:5432/myapp - REDIS_URL=redis://redis:6379 depends_on: db: condition: service_healthy redis: condition: service_started healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 restart: unless-stopped networks: - app-network
db: image: postgres:16-alpine environment: POSTGRES_USER: user POSTGRES_PASSWORD: pass POSTGRES_DB: myapp volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U user -d myapp"] interval: 10s timeout: 5s retries: 5 networks: - app-network
redis: image: redis:7-alpine command: redis-server --appendonly yes volumes: - redis_data:/data networks: - app-network
nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./certs:/etc/nginx/certs:ro depends_on: - app networks: - app-network
volumes: postgres_data: redis_data:
networks: app-network: driver: bridge
Development Override
docker-compose.override.yml
version: '3.8'
services: app: build: target: development volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development command: npm run dev
db: ports: - "5432:5432"
Multi-Stage Dockerfile
Build stage
FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --only=production
Production stage
FROM node:20-alpine AS production WORKDIR /app COPY --from=builder /app/node_modules ./node_modules COPY . . USER node EXPOSE 3000 CMD ["node", "dist/main.js"]
Tags
docker , containers , devops , infrastructure , orchestration
Compatibility
-
Codex: ✅
-
Claude Code: ✅