mcpField
C
compose

compose

github.com/mwguerraCloud & DevOps3636 installsUpdated 26w ago
Repository

About compose

compose is a skill that generates Docker Compose configurations for multi-container applications. It is aimed at developers setting up development or production environments, with service, network, volume, health-check, dependency, and environment settings considered together.

Key features

  1. 01Define application services
  2. 02Configure networks and volumes
  3. 03Set health checks and dependencies
  4. 04Manage environment configuration
  5. 05Follow common service patterns

Use cases

  1. 01Create a Compose file for a new app
  2. 02Add a database or cache service
  3. 03Configure development or production environments

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/mwguerra/claude-code-plugins --skill compose

After installing, type/composein Claude Code to confirm it loaded.

Details

From the project README

Docker Compose Configuration Skill

Overview

This skill generates Docker Compose configurations for multi-container applications. It creates properly structured compose files with:

  • Service definitions
  • Network configuration
  • Volume management
  • Health checks
  • Dependencies
  • Environment configuration

Activation

Use this skill when:

  • Creating a new compose file
  • Adding services to existing compose
  • Configuring container orchestration
  • Setting up development or production environments

Process

1. Understand Requirements

Gather information about:

  • Required services (web, api, database, cache, etc.)
  • Environment (development/production)
  • Networking needs (internal, external, SSL)
  • Persistence requirements
  • Scaling needs
2. Consult Documentation

Read relevant documentation:

  • 03-compose-fundamentals.md for structure
  • 04-networking.md for networks
  • 05-databases.md for database services
  • 06-services.md for dependencies
  • 08-volumes.md for persistence
3. Generate Configuration

Create 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

Service Patterns

Web Application
services:
  web:
    build: .
    ports:
      - "80:80"
    depends_on:
      - api
API Service
services:
  api:
    build: ./api
    expose:
      - "3000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/app
    depends_on:
      db:
        condition: service_healthy
Database Service
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
Cache Service
services:
  redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data
Background Worker
services:
  worker:
    build: .
    command: npm run worker
    depends_on:
      - db
      - redis

Network Patterns

Internal Database Network
networks:
  backend:
    internal: true  # No external access
External Shared Network
networks:
  proxy:
    external: true
    name: traefik_proxy

Volume Patterns

Named Volume
volumes:
  postgres_data:
Bind Mount (Development)
volumes:
  - ./src:/app/src
Anonymous Volume
volumes:
  - /app/node_modules

Environment Patterns

Direct Values
environment:
  - NODE_ENV=production
From .env File
env_file:
  - .env
With Defaults
environment:
  - DB_HOST=${DB_HOST:-localhost}

Output

Generated compose file includes:

  • All required services
  • Proper network configuration
  • Volume definitions
  • Health checks
  • Dependency management
  • Environment configuration
  • Comments for complex settings

Comments

Markdown supported