SuperAPI AI 工具集

ln-783-container-launcher

部署与运维

查看项目

更新于 10-15 12:07

技能介绍

用途

ln-783-container-launcher 用于构建 Docker 镜像、启动容器,并使用 Docker 原生健康检查与重试策略进行全面的健康验证。它适合在需要验证容器化服务能否正确启动时使用,例如独立容器启动、开发环境搭建等场景。它不适用于生产部署(应使用正规的 CI/CD),也不负责构建应用代码(由 ln-781 处理)、运行测试(由 ln-782 处理),以及单主机之外的容器编排(如 Kubernetes、Swarm)。

主要能力

该技能的工作流程分为六个步骤:

  1. 预检(Pre-flight Checks):验证 Docker 环境是否就绪,包括 Docker 守护进程是否运行、Docker Compose 是否可用、Compose 文件是否存在、所需端口是否空闲、磁盘空间是否充足(低于 2GB 空闲时警告)。

  2. 解析 Compose 配置:从 docker-compose.yml 中提取服务名称、暴露端口、健康检查定义、依赖关系(depends_on)以及卷挂载信息。

  3. 构建镜像:构建 compose 文件中定义的所有镜像,使用 compose 文件中的构建上下文和构建参数,利用 Docker 层缓存加速,失败时报告完整构建日志。

  4. 启动容器:按正确顺序启动容器,遵循 depends_on 和 healthcheck 条件,以分离模式在后台运行,使用 compose 定义的网络和卷。

  5. 健康验证:根据条件选择策略——若服务定义了 healthcheck 则使用 Docker 原生健康状态;若定义了 depends_on: condition: service_healthy 则等待 Docker 健康状态;若无 healthcheck 则使用带重试的外部 HTTP 探测。重试配置为:最大尝试 10 次,初始延迟 5 秒,指数退避(5、10、20、40 秒),最大总等待 120 秒。健康检查方法包括 Docker 健康状态、对暴露端口的 HTTP GET、容器 exec、TCP 端口检查。

  6. 报告结果:返回结构化结果,包含 containers(容器状态对象数组)、healthChecks(健康检查结果数组)、accessUrls(服务名到访问 URL 的映射)、overallStatus(healthy / unhealthy / partial)、startupDuration(从启动到全部健康的时间)。

使用方式

该技能提供以下选项:keepRunning(默认 true,验证后保留容器运行)、stopAfter(默认 false,成功验证后停止容器)、healthTimeout(默认 120,等待健康状态的最大秒数)、showLogs(默认 true,失败时显示容器日志)、buildFirst(默认 true,启动前构建镜像)、pullLatest(默认 false,构建前拉取基础镜像)。报告会提供清理指令,包括停止容器(保留数据)、移除容器和网络(保留卷)、完全清理(包括卷和镜像)。

在 Claude Code 2.1.98+ 中,可使用 Monitor 流式传输容器日志:就绪信号使用 docker compose logs -f 2>&1 | grep --line-buffered -iE 'ready|listening|healthy|started',错误监视使用 docker compose logs -f 2>&1 | grep --line-buffered -iE 'error|fatal|panic|exit',timeout_ms 为 healthTimeout * 1000。若 keepRunning 为 true 且需要持续日志监控,可使用 persistent: true。若 Monitor 不可用,回退为带 sleep 和 curl 健康检查的重试循环。

适用场景

  • 独立容器启动
  • 开发环境搭建
  • 验证容器化服务能否正确启动

限制

  • 不适用于生产部署(应使用正规的 CI/CD)
  • 不负责构建应用代码(由 ln-781 处理)
  • 不负责运行测试(由 ln-782 处理)
  • 不涉及单主机之外的容器编排(如 Kubernetes、Swarm)

错误处理

该技能处理多种错误类型:Docker 守护进程未运行(报告并附启动说明)、端口已被占用(报告冲突,建议先执行 docker compose down)、镜像构建失败(报告并附构建日志)、容器退出(报告并附容器日志)、健康检查超时(报告最后已知状态和日志)、网络不可达(检查 Docker 网络配置)。

关键规则

  • 可用时使用原生健康检查,比外部探测更可靠
  • 实现带退避的重试,服务需要时间初始化
  • 失败时始终收集日志,对调试至关重要
  • 从 compose 文件解析端口,不要硬编码端口号
  • 遵循 depends_on 顺序,对依赖数据库的服务至关重要

完成定义

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