用途
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 为相关技能。
限制
资料未提供关于收费、价格、平台支持范围或具体效果的信息。部分细节(如参数的具体行为、监控服务的具体内容)暂未提供。