SuperAPI AI 工具集

docker-compose-setup

部署与运维

查看项目

更新于 10-15 11:58

技能介绍

用途

docker-compose-setup 用于设计和配置 Docker Compose 文件,以便在多容器应用中进行服务编排。资料说明其面向开发和生产环境,支持服务依赖、健康检查以及环境管理。

主要能力

该技能可配置服务(services)、网络(networks)和卷(volumes),并支持:

  • 服务依赖:通过 depends_on 配合 condition: service_healthy 控制启动顺序。
  • 健康检查:为服务定义 healthcheck,包含 test、interval、timeout、retries 等字段。
  • 环境管理:采用基础文件加覆盖文件(override)的模式,分别应对开发与生产环境;支持 .env 文件自动加载的环境变量,及默认值写法(如 ${APP_VERSION:-latest})。
  • 服务分档(profiles):通过 profiles 让部分服务仅在指定 profile 下启动,例如 debug 或 testing。
  • 监控服务:参数 include_monitoring 可添加监控服务(默认 false)。

参数

资料列出以下参数:

  • services(array,非必填,无默认值):要配置的服务列表。
  • environment(enum,非必填,默认 dev):可选 dev/staging/prod。
  • include_monitoring(boolean,非必填,默认 false):添加监控服务。

现代 Compose 文件

资料指出 version 字段已废弃,文件应直接以 services: 开头。给出的示例包含三个服务:

  • frontend:使用 ./frontend 作为构建上下文,target 为 production,映射 80:80,依赖 backend 的健康状态,健康检查为 curl -f http://localhost/health,interval 30s,timeout 10s,retries 3,restart 策略 unless-stopped。
  • backend:构建 ./backend,暴露 3000 端口,通过环境变量 DATABASE_URL 连接数据库(使用 ${DB_PASSWORD}),依赖 database 的健康状态,健康检查为 curl -f http://localhost:3000/health,interval 10s,timeout 5s,retries 5。
  • database:使用 postgres:16-alpine 镜像,挂载 db_data 卷到 /var/lib/postgresql/data,通过 POSTGRES_PASSWORD 环境变量设置密码,健康检查为 pg_isready -U postgres,interval 5s,timeout 5s,retries 5。

文件末尾声明命名卷 db_data。

使用方式

环境管理

采用基础文件加覆盖文件模式:

  • docker-compose.yaml(基础)
  • docker-compose.override.yaml(开发环境,自动加载)
  • docker-compose.prod.yaml(生产环境,包含 deploy.replicas: 3 和 restart: always)

启动命令:

  • 开发:docker compose up(自动加载 override 文件)
  • 生产:docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d

环境变量

.env 文件会被自动加载,可在 compose 文件中以 ${DB_PASSWORD} 引用,并使用 ${APP_VERSION:-latest} 提供默认值。

服务分档

可在服务上定义 profiles,例如 debugger 服务带 profiles: [debug],test-db 服务带 profiles: [testing]。启动命令:

  • 仅 app:docker compose up
  • app 加 debugger:docker compose --profile debug up

常用命令

  • 启动服务:docker compose up -d
  • 重新构建并启动:docker compose up -d --build
  • 查看日志:docker compose logs -f backend
  • 扩展服务:docker compose up -d --scale backend=3
  • 停止并清理:docker compose down -v
  • 校验配置:docker compose config

调用方式为 Skill("docker-compose-setup")。

适用场景

资料未明确列出具体适用场景,但从内容可推断其适用于需要编排多容器应用的开发与生产环境,涉及服务依赖、健康检查、环境变量管理及按环境切换配置等场景。

错误处理与排查

资料列出常见错误及原因与解决方案:

  • undefined service:依赖缺失,需定义服务。
  • yaml syntax error:缩进问题,需修正 YAML。
  • port already in use:端口冲突,需更换端口。
  • healthcheck failing:服务未就绪,需增加 start_period。

回退策略包括:用 docker compose config 校验配置、逐个启动服务、使用 --no-deps 跳过依赖。

调试清单:检查 YAML 是否有效(docker compose config)、镜像是否可用(docker compose pull)、依赖是否健康(检查 healthchecks)、环境变量是否设置(检查 .env 文件)。

健康检查调试命令:

  • 查看健康状态:docker inspect --format='{{json .State.Health}}' <container>
  • 查看健康日志:docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' <container>

相关技能

资料列出 docker-networking、docker-volumes、docker-production 为相关技能。

限制

资料未提供关于收费、价格、平台支持范围或具体效果的信息。部分细节(如参数的具体行为、监控服务的具体内容)暂未提供。