mcpField
L
ln-783-container-launcher

ln-783-container-launcher

github.com/levnikolaevich云与 DevOps584376 次安装2 天前更新
代码仓库

关于 ln-783-container-launcher

用于构建 Docker 镜像、启动 Compose 服务并检查健康状态的技能,适合独立容器启动和开发环境设置,不用于生产部署或多主机编排。

主要功能

  1. 01Docker 和 Compose 环境检查
  2. 02解析 Compose 配置
  3. 03构建镜像并启动容器
  4. 04带重试和退避的健康检查
  5. 05提供访问 URL 和清理说明

适用场景

  1. 01启动基于 Compose 的开发环境
  2. 02检查容器启动后的服务就绪状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-783-container-launcher

安装后在 Claude Code 中输入/ln-783-container-launcher确认已加载。

附带文件references/monitor_integration_pattern.md

详细介绍

路径: 文件路径(references/、../ln-*)相对于此技能目录。

ln-783-container-launcher

类型: L3 Worker 类别: 7XX 项目引导


用途

构建 Docker 镜像、启动容器,并使用 Docker 原生健康检查和重试策略进行全面的健康验证。

范围:

  • 检测并验证 docker-compose.yml 配置
  • 构建 Docker 镜像
  • 按正确的启动顺序启动容器
  • 使用原生健康检查验证容器健康状况
  • 提供访问 URL 和清理说明

范围之外:

  • 构建应用程序代码(由 ln-781 处理)
  • 运行测试(由 ln-782 处理)
  • 单主机之外的容器编排(Kubernetes、Swarm)

何时使用

场景使用此技能
可独立使用是
独立启动容器是
开发环境设置是
生产部署否,使用适当的 CI/CD

工作流

步骤 1:启动前检查

验证 Docker 环境是否就绪。

检查失败时的操作
Docker 守护进程正在运行报告错误并提供安装说明
Docker Compose 可用报告错误并建议安装
Compose 文件存在报告错误并列出预期位置
所需端口空闲报告冲突并建议替代端口
磁盘空间充足空间不足(可用空间 <2GB)时发出警告
步骤 2:解析 Compose 配置

从 docker-compose.yml 中提取服务信息。

信息用途
服务名称跟踪要监控的容器
暴露的端口确定要检查的端口
健康检查定义如果已定义,则使用原生健康检查
依赖项(depends_on)了解启动顺序
卷挂载验证路径是否存在
步骤 3:构建镜像

构建 compose 文件中定义的所有镜像。

方面策略
构建上下文使用 compose 文件中的路径
构建参数从 compose 配置传入
缓存使用 Docker 层缓存以提高速度
失败报告构建错误并提供完整日志
步骤 4:启动容器

使用适当的编排方式启动容器。

方面策略
启动顺序遵循 depends_on 和 healthcheck 条件
后台模式在后台运行
网络使用 compose 定义的网络
卷挂载所有已定义的卷
步骤 5:健康验证

使用合适的策略验证所有容器是否健康。

策略选择:

条件策略
服务在 compose 中包含 healthcheck:使用 Docker 原生健康状态
服务包含 depends_on: condition: service_healthy等待 Docker 健康状态
未定义 healthcheck使用外部 HTTP 探测并重试

重试配置:

参数值理由
最大尝试次数10为启动较慢的服务留出时间
初始延迟5s给容器启动时间
退避指数退避(5、10、20、40s)避免服务过载
总等待时间上限120s合理的上限

健康检查方法:

方法使用时机
Docker 健康状态容器已定义 healthcheck 时
对暴露端口发送 HTTP GET 请求未定义 healthcheck 的 Web 服务
容器 exec未暴露端口的服务
TCP 端口检查数据库和消息队列
步骤 6:报告结果

向编排器返回结构化结果。

结果结构:

字段描述
containers容器状态对象数组
healthChecks健康检查结果数组
accessUrls服务名称到访问 URL 的映射
overallStatushealthy / unhealthy / partial
startupDuration从启动到全部健康所用的时间

容器状态对象:

字段描述
name容器名称
servicecompose 中的服务名称
statusrunning / exited / restarting
healthhealthy / unhealthy / starting / none
port暴露的端口(如果有)
startedAt容器启动时间戳

健康检查结果:

字段描述
url检查的 URL 或端点
statusHTTP 状态码或检查结果
responseTime响应时间,单位为 ms
healthy健康状态布尔值

错误处理

错误类型操作
Docker 守护进程未运行报告问题并提供启动说明
端口已被占用报告冲突,并建议先运行 docker compose down
镜像构建失败报告问题并附上构建日志
容器已退出报告问题并附上容器日志
健康检查超时报告问题,并附上最后已知状态和日志
网络无法访问检查 Docker 网络配置

选项

选项默认值描述
keepRunningtrue验证后让容器继续运行
stopAfterfalse验证成功后停止容器
healthTimeout120等待健康状态的最长秒数
showLogstrue失败时显示容器日志
buildFirsttrue启动前构建镜像
pullLatestfalse构建前拉取基础镜像

清理说明

在报告中向用户提供清理命令。

操作描述
停止容器停止运行中的容器,但保留数据
移除容器和网络清理容器,但保留卷
移除所有内容完全清理,包括卷和镜像

关键规则

  1. 有原生健康检查时使用原生健康检查 - 比外部探测更可靠
  2. 实现带退避的重试机制 - 服务需要时间初始化
  3. 失败时始终收集日志 - 这对调试至关重要
  4. 解析 compose 文件以获取端口 - 不要对端口号进行硬编码
  5. 遵循 depends_on 顺序 - 这对依赖数据库的服务至关重要
监控集成(Claude Code 2.1.98+)

必须阅读: 加载 references/monitor_integration_pattern.md

对于容器健康验证,使用 Monitor 流式传输容器日志:

模式命令timeout_ms
就绪信号docker compose logs -f 2>&1 | grep --line-buffered -iE 'ready|listening|healthy|started'healthTimeout * 1000
错误监视docker compose logs -f 2>&1 | grep --line-buffered -iE 'error|fatal|panic|exit'healthTimeout * 1000

如果 keepRunning 为 true 且需要持续监控日志,请使用 persistent: true。 回退方案:如果 Monitor 不可用,则使用带 sleep 和 curl 健康检查的重试循环。


完成标准

  • 已验证 Docker 环境
  • 已成功构建所有镜像
  • 所有容器均在运行
  • 所有健康检查均已通过
  • 已提供访问 URL
  • 已向编排器返回结果

参考文件

  • 上级:../ln-780-bootstrap-verifier/SKILL.md

版本: 2.0.0 最后更新: 2026-01-10

评论

支持 Markdown