关于 docker-compose-setup
docker-compose-setup 是用于设计 Docker Compose 配置的技能,面向需要编排开发或生产环境多容器应用的团队,涵盖服务依赖、环境管理与故障排查。
主要功能
- 01配置服务与依赖关系
- 02设置健康检查
- 03管理环境变量与配置覆盖
- 04使用服务配置档案
- 05验证并排查 Compose 文件
适用场景
- 01为开发或生产环境编写 Compose 文件
- 02分离开发与生产环境配置
- 03排查服务启动或健康检查错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-docker --skill docker-compose-setup安装后在 Claude Code 中输入/docker-compose-setup确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/config.yamldocker-compose-template.yamlschema.jsonreferences/GUIDE.mdPATTERNS.mdscripts/validate.py详细介绍
Docker Compose 设置技能
掌握 Docker Compose,以通过服务依赖、健康检查和环境管理来编排多容器应用。
用途
为开发和生产环境设计并配置 Docker Compose 文件,妥善编排服务。
参数
| 参数 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| services | array | 否 | - | 要配置的服务列表 |
| environment | enum | 否 | dev | dev/staging/prod |
| include_monitoring | boolean | 否 | false | 添加监控服务 |
现代 Compose 文件(2024-2025)
注意:version 字段已弃用。直接从 services: 开始。
services:
frontend:
build:
context: ./frontend
target: production
ports:
- "80:80"
depends_on:
backend:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
backend:
build: ./backend
expose:
- "3000"
environment:
DATABASE_URL: postgres://user:${DB_PASSWORD}@database:5432/app
depends_on:
database:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 10s
timeout: 5s
retries: 5
database:
image: postgres:16-alpine
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
volumes:
db_data:
环境管理
基础配置 + 覆盖配置模式
# docker-compose.yaml (base)
services:
app:
image: myapp:latest
# docker-compose.override.yaml (dev - auto-loaded)
services:
app:
build: .
volumes:
- ./src:/app/src
environment:
- DEBUG=true
# docker-compose.prod.yaml (production)
services:
app:
deploy:
replicas: 3
restart: always
# Development (loads override automatically)
docker compose up
# Production
docker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d
环境变量
# .env file (auto-loaded)
DB_PASSWORD=secret123
APP_VERSION=1.2.3
# Using in compose
environment:
- DB_PASSWORD=${DB_PASSWORD}
- VERSION=${APP_VERSION:-latest} # Default value
服务配置文件
services:
app:
image: myapp
# Only with --profile debug
debugger:
image: debug-tools
profiles:
- debug
# Only with --profile testing
test-db:
image: postgres:alpine
profiles:
- testing
docker compose up # app only
docker compose --profile debug up # app + debugger
常用命令
# Start services
docker compose up -d
# Rebuild and start
docker compose up -d --build
# View logs
docker compose logs -f backend
# Scale service
docker compose up -d --scale backend=3
# Stop and clean
docker compose down -v
# Validate config
docker compose config
错误处理
常见错误
| 错误 | 原因 | 解决方案 |
|---|---|---|
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 - 依赖项是否健康?检查健康检查配置
- 是否已设置环境?检查 .env 文件
健康检查调试
# Check health status
docker inspect --format='{{json .State.Health}}' <container>
# View health logs
docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' <container>
用法
Skill("docker-compose-setup")
相关技能
- docker-networking
- docker-volumes
- docker-production
评论
支持 Markdown