Skip to content

Everything Claude Code Docker Patterns Skill 是专为本地开发、容器安全、网络与多服务编排场景设计的生产级 Docker/Docker Compose 最佳实践集合。它帮助开发者规范化本地开发环境、提升容器安全、优化服务网络和数据卷管理,并支持一键迁移到生产环境。Skill 可与 Claude Code 等 AI 编程助手协作,自动生成、审查和修复 Docker 相关配置,极大提升容器化开发效率与安全性。

Everything Claude Code Docker Patterns Skill:本地开发、容器安全、网络与多服务编排最佳实践

在现代开发流程中,容器化已成为本地开发、测试和生产部署的主流方式。但实际操作中,开发者常常遇到环境不一致、网络配置混乱、数据丢失或安全隐患等问题。Everything Claude Code Docker Patterns Skill(下称 docker-patterns Skill)正是为了解决这些痛点而设计,系统性地将生产级 Docker/Docker Compose 模式集成到 AI 编程助手(如 Claude Code、Codex、Cursor)的自动化工作流中。

本指南将详细介绍 docker-patterns Skill 的激活场景、实际使用流程、输出示例,以及如何与其他 Agent/Skill 协作,助你在项目中高效、安全地落地容器化开发。

docker-patterns Skill 能解决什么问题?

传统做法的痛点:

  • 手写 Docker Compose 文件容易遗漏安全、网络、数据卷等细节,导致环境不一致或安全漏洞。
  • 多服务协作时,网络和服务发现配置复杂,易出错。
  • 本地开发与生产环境镜像分离不清,导致部署失败或调试困难。
  • 卷挂载和数据持久化策略混乱,开发数据丢失或污染生产环境。
  • 容器权限、密钥管理不到位,产生安全隐患。

docker-patterns Skill 的优势:

  • 自动生成本地开发与生产环境分离的 Compose 配置,内置多阶段 Dockerfile 模板。
  • 标准化网络、服务发现、卷管理、安全加固等模式,减少人为失误。
  • 内置常见多服务(如 app、db、redis、mailpit)协作范式,适配主流开发框架。
  • 输出安全、可维护、易调试的 Dockerfile/Compose 配置,并能自动修复常见反模式。
  • 支持与 Code Reviewer AgentSecurity Reviewer Agent 等协作,自动审查和优化容器配置。

何时激活 docker-patterns Skill?

  • 新项目初始化,需快速搭建本地多服务开发环境时
  • 现有项目迁移到容器化开发/部署流程时
  • 遇到容器网络、卷挂载、依赖初始化等疑难杂症需要诊断时
  • 代码审查、CI/CD 流程中对 Dockerfile/Compose 进行安全和规范性检查时
  • 需要将开发环境与生产环境配置解耦,提升可维护性和安全性时

实战操作流程(Step by Step)

1. 触发 Skill:明确目标和场景

在 Claude Code、Cursor 等 AI 编程助手中,输入类似如下指令即可自动触发 docker-patterns Skill:

为本项目生成支持热更新的本地开发 Docker Compose 配置,并兼顾生产环境安全。

请帮我分析当前 docker-compose.yml 是否存在安全隐患和反模式,并给出修正建议。

2. 自动生成标准化 Compose 配置

Skill 会根据项目类型和依赖,生成如下结构的 Compose 配置:

yaml
# docker-compose.yml
services:
  app:
    build:
      context: .
      target: dev
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - DATABASE_URL=postgres://postgres:postgres@db:5432/app_dev
      - REDIS_URL=redis://redis:6379/0
      - NODE_ENV=development
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
    command: npm run dev

  db:
    image: postgres:16-alpine
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: app_dev
    volumes:
      - pgdata:/var/lib/postgresql/data
      - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init.sql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 3s
      retries: 5

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redisdata:/data

  mailpit:
    image: axllent/mailpit
    ports:
      - "8025:8025"
      - "1025:1025"

volumes:
  pgdata:
  redisdata:

3. 多阶段 Dockerfile 自动区分开发与生产

Skill 会建议并生成多阶段 Dockerfile,确保开发环境支持热更新和调试,生产环境镜像最小化、安全加固:

dockerfile
# Stage: dev
FROM node:22-alpine AS dev
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]

# Stage: production
FROM node:22-alpine AS production
WORKDIR /app
RUN addgroup -g 1001 -S appgroup && adduser -S appuser -u 1001
USER appuser
COPY --from=build --chown=appuser:appgroup /app/dist ./dist
COPY --from=build --chown=appuser:appgroup /app/node_modules ./node_modules
COPY --from=build --chown=appuser:appgroup /app/package.json ./
ENV NODE_ENV=production
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://localhost:3000/health || exit 1
CMD ["node", "dist/server.js"]

4. 自动生成 override、prod 配置及一键切换命令

Skill 会输出开发、生产环境的 override 配置和启动命令:

yaml
# docker-compose.override.yml
services:
  app:
    environment:
      - DEBUG=app:*
      - LOG_LEVEL=debug
    ports:
      - "9229:9229"   # Node.js debugger

# docker-compose.prod.yml
services:
  app:
    build:
      target: production
    restart: always
    deploy:
      resources:
        limits:
          cpus: "1.0"
          memory: 512M

启动开发环境:

bash
docker compose up

启动生产环境:

bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

5. 网络与服务发现自动配置

Skill 会自动为多服务项目配置合适的网络模式、服务名解析和端口暴露策略。例如:

  • 服务间通过 service name 自动解析(如 dbredis
  • 生产环境限制端口暴露,仅允许内部访问
  • 支持自定义网络隔离前后端、API、数据库

6. 卷挂载和数据持久化策略建议

Skill 会根据实际需求自动区分 bind mount、named volume、anonymous volume,确保开发热更新、依赖隔离和数据安全。例如:

yaml
volumes:
  pgdata:        # 持久化数据库
  redisdata:     # 持久化 Redis
yaml
services:
  app:
    volumes:
      - .:/app                   # 代码热更新
      - /app/node_modules        # 隔离依赖
      - /app/.next               # 隔离构建缓存

7. 容器安全加固与密钥管理

Skill 会自动输出如下安全建议与配置:

  • Dockerfile 只用具体 tag(如 node:22.12-alpine3.20),禁止 :latest
  • 强制非 root 用户运行
  • Compose 配置中开启 no-new-privileges:trueread_only: truecap_drop: ALL 等安全选项
  • 密钥通过 .env 文件或 Docker secrets 注入,禁止写入镜像层

8. 典型输出示例

Skill 生成的完整输出会包含:

  • 标准化的 docker-compose.ymlDockerfile.dockerignore 文件
  • 生产/开发环境切换命令
  • 容器安全、网络、数据卷配置建议
  • 反模式检测与修正建议

9. 常见调试与维护命令

Skill 会输出一组常用调试命令,助你快速排查问题:

bash
docker compose logs -f app
docker compose exec app sh
docker compose exec db psql -U postgres
docker compose up --build
docker compose down -v
docker compose exec app nslookup db
docker network inspect <project>_default

与其他 Agent/Skill 的协作关系

典型输出示例

你可以在 Claude Code 中直接请求“生成本地开发和生产分离的 Docker Compose 配置”,Skill 会自动输出完整的 Compose 文件、多阶段 Dockerfile、安全建议及常用调试命令,确保环境一致性和安全性。


FAQ

Q: docker-patterns Skill 能自动识别并修复哪些常见 Docker 反模式?
A: Skill 能检测如使用 :latest tag、容器运行 root 用户、数据未挂载卷、密钥硬编码、单体大容器等反模式,并给出修正建议。

Q: 如何让 Skill 适配我的项目技术栈(如 Node.js、Python、Java)?
A: Skill 会根据项目依赖自动调整 Compose 和 Dockerfile 模板,支持主流语言和框架,同时可与 Codebase Onboarding Skill 联动分析项目结构。

Q: 生产环境还能用 docker compose 吗?
A: Skill 推荐本地开发用 docker compose,生产多服务部署建议用 Kubernetes、ECS 或 Swarm 等编排系统,并自动输出迁移建议。