mcpField
C
compose

compose

github.com/mwguerra云与 DevOps3636 次安装26 周前更新
代码仓库

关于 compose

compose 是为多容器应用生成 Docker Compose 配置的 Skill,适用于搭建开发或生产环境,并统筹服务、网络、卷、健康检查、依赖和环境设置。

主要功能

  1. 01定义应用服务
  2. 02配置网络与卷
  3. 03设置健康检查和依赖
  4. 04管理环境配置
  5. 05采用常见服务模式

适用场景

  1. 01为新应用创建 Compose 文件
  2. 02添加数据库或缓存服务
  3. 03配置开发或生产环境

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/compose确认已加载。

详细介绍

Docker Compose 配置技能

概述

此技能可为多容器应用生成 Docker Compose 配置。它会创建结构规范的 compose 文件,其中包含:

  • 服务定义
  • 网络配置
  • 卷管理
  • 健康检查
  • 依赖项
  • 环境配置

触发条件

在以下情况使用此技能:

  • 创建新的 compose 文件
  • 向现有 compose 添加服务
  • 配置容器编排
  • 设置开发或生产环境

流程

1. 了解需求

收集以下信息:

  • 所需服务(Web、API、数据库、缓存等)
  • 环境(开发/生产)
  • 网络需求(内部、外部、SSL)
  • 持久化需求
  • 扩展需求
2. 查阅文档

阅读相关文档:

  • 03-compose-fundamentals.md 了解结构
  • 04-networking.md 了解网络
  • 05-databases.md 了解数据库服务
  • 06-services.md 了解依赖项
  • 08-volumes.md 了解持久化
3. 生成配置

遵循最佳实践创建 compose 文件:

# 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

服务模式

Web 应用
services:
  web:
    build: .
    ports:
      - "80:80"
    depends_on:
      - api
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 文件
env_file:
  - .env
带默认值
environment:
  - DB_HOST=${DB_HOST:-localhost}

输出

生成的 compose 文件包含:

  • 所有必需服务
  • 适当的网络配置
  • 卷定义
  • 健康检查
  • 依赖项管理
  • 环境配置
  • 复杂设置的注释

评论

支持 Markdown