SuperAPI AI 工具集

compose-patterns-2025

部署与运维

查看项目

更新于 10-15 12:05

技能介绍

用途

该技能面向需要把 Docker Compose 用于生产环境的开发者与运维人员,汇总 2025 年生产级 Docker Compose 模式与最佳实践,内容依据官方 Docker 文档与行业标准整理。它可作为编写、审查和优化 Compose 配置时的参考清单。

主要能力

技能按主题组织多种可复用模式:

  • 文件格式变更:说明 Docker Compose v2.42+ 中 version 字段已废弃,并给出正确与过时的写法对比。
  • 多环境策略:采用“基础文件 + 环境覆盖文件”的方式,例如 compose.yaml 作为基础,compose.override.yaml 用于开发(自动加载),compose.prod.yaml 用于生产(显式指定),compose.ci.yaml 用于 CI/CD。
  • 环境变量管理:按环境拆分 .env 文件,提供 .env.template(提交到 git)、.env.dev、.env.prod 示例,并演示通过 --env-file 加载指定环境。
  • 安全模式:以非 root 用户运行(user、read_only、tmpfs、cap_drop、cap_add、security_opt),以及在 Dockerfile 中创建用户;密钥管理使用 Docker Swarm secrets 或环境变量替代方案,并给出应用读取 /run/secrets/ 的代码示例。
  • 健康检查:HTTP 端点、数据库 ping、自定义脚本三类健康检查写法,并附 healthcheck.js 示例。
  • 依赖管理:通过 depends_on 的 condition(service_healthy、service_started、service_completed_successfully)实现有序启动。
  • 网络隔离:三层网络架构(frontend/backend,backend 设为 internal)以及按服务划分网络。
  • 卷模式:命名卷用于持久化,开发环境使用绑定挂载,并列出 :ro、:rw、:cached、:delegated、:z、:Z 等挂载选项含义。
  • 资源管理:CPU 与内存的 limits 与 reservations,并演示如何计算总资源需求。
  • 日志模式:集中式日志配置(json-file 驱动、max-size、max-file、compress、labels)及查看日志命令。
  • 初始化容器:数据库迁移等一次性任务,配合 service_completed_successfully 控制启动顺序。
  • YAML 锚点与别名:复用公共配置(x-common-app-config、x-logging、x-resources)。
  • 端口绑定:安全优先的绑定方式,包括仅本机绑定 127.0.0.1 以及通过环境变量控制绑定地址。
  • 重启策略:always、unless-stopped、no 以及 Swarm 下的 on-failure 策略。
  • 校验与测试:部署前校验脚本,包含语法校验、构建、安全扫描、启动、健康检查与冒烟测试。
  • 完整生产示例:一个包含 nginx、api、migration、postgres、redis 的完整 Compose 配置。
  • 常见错误与排查命令:列出应避免的做法,并给出 docker compose config、docker stats 等排查命令。

使用方式

技能以文档形式提供模式与示例,用户可参照其中的 Compose 片段与命令编写自己的配置。典型命令包括:开发环境直接 docker compose up(自动加载 compose.override.yaml);生产环境 docker compose -f compose.yaml -f compose.prod.yaml up -d;CI/CD 使用 docker compose -f compose.yaml -f compose.ci.yaml up --abort-on-container-exit;通过 docker compose --env-file .env.dev up 加载指定环境变量文件。

适用场景

适用于需要将 Docker Compose 用于生产部署、多环境管理、安全加固、健康检查与依赖编排、网络与卷规划、资源限制、日志管理以及部署前校验的团队与个人。

限制

资料未提供该技能的安装方式、运行环境要求、收费或价格信息、平台支持范围以及实际效果说明,这些内容暂未提供。