用途
Docker Local Dev 用于创建或修复本地 Docker Compose 服务、Dockerfile、挂载、网络以及就绪检查,典型使用场景是容器配置本身就是交付物的情况。它面向本地开发,要求把生产镜像、密钥、部署、证书与运行时拓扑与本地开发环境分开处理。
主要能力
- 检查并复用项目已有的 compose.yaml、compose.yml、docker-compose*.yml、override 文件、Dockerfile*、.dockerignore、.devcontainer/、Makefile 与包脚本。
- 解析应用范围、开发命令、内部端口、共享包、热重载需求,以及实际使用的数据库、缓存、队列、调度、邮件与调试服务。
- 生成最小且一致的配置,包括开发用 Dockerfile 或构建目标、.dockerignore、不含过时顶层 version 的 compose.yaml、所选代理或进程配置,以及在需要配置时生成示例环境文件与已被忽略的本地环境文件。
- 支持绑定挂载源目录加依赖命名卷,或在 Compose 版本支持时使用 Compose Watch 的 sync、sync+restart、rebuild 规则。
- 支持为可选调试与管理工具设置 Compose profile,为依赖设置基于健康检查的启动门控。
- 提供脚本:detect-stack.sh(技术栈检测,stdout 输出 JSON)、detect-images.sh、detect-network.sh、health-check.sh、db-test.sh(默认连接或只读查询,加 --crud 执行临时表 CRUD 检查)、scan-host-ports.mjs(扫描主机端口并写入端口注册表)。
使用方式
- 在目标项目目录运行 docker version 与 docker compose version,确认 Docker 与 Compose 能力,再选择语法。
- 检查项目内的 Compose、Dockerfile、清单、锁文件、运行时版本文件、环境示例、monorepo 工作区文件、既有本地代理约定、网络、卷与主机端口映射,并在编辑跟踪文件前查看 Git 状态与仓库说明。
- 可通过 <skill-directory>/scripts/detect-stack.sh "<project-root>" 辅助检测,脚本在 stdout 输出 JSON、stderr 输出诊断信息。Docker 可用时可选用 detect-images.sh 与 detect-network.sh 检查本地镜像与网络。
- 解析设计后按需读取参考文档:tech-stack-detection.md(检测规则与 monorepo 发现)、service-configuration-guide.md(镜像、进程、依赖、挂载、环境、Dockerfile)、cms-configuration-guide.md(WordPress、Drupal、Joomla)、networking-ports-guide.md(端口、代理、域名、网络、主机访问)、merge-backup-strategy.md(既有 Compose 或 Dockerfile 变更)、health-check-patterns.md(就绪检查与冒烟测试)。
- 生成前对既有技术栈的重大变更说明将修改的文件、服务与版本、主机端口与域名、挂载策略。
- 验证时先运行 docker compose config --quiet 与 docker build --check(仅当 Docker 版本支持),再按请求范围执行 docker compose build、docker compose up -d --wait、docker compose ps -a。若 --wait 不可用,则后台启动并在有界超时内轮询声明的健康检查,查看失败或重启服务的日志。
- 可运行 health-check.sh、db-test.sh 及技术栈相关的冒烟检查(如 php artisan about、wp core version、drush status、python manage.py check 或应用健康端点)。运行时验证范围内,用无害的临时修改验证热重载后再还原。
- 报告生成或修改的文件、所选服务与版本、本地 URL 与显式主机暴露、确切的验证命令与结果、预期会停止的一次性服务、假设、跳过的检查与平台限制。报告中不得包含密钥值。
适用场景
- 需要为已有项目补齐或修复本地 Docker Compose 开发环境。
- 需要按项目约束选择镜像、端口、挂载与健康检查策略。
- 需要以容器配置为交付物,而非仅运行容器。
限制与约束
- 默认在主对话中运行;使用子代理需先获得明确的代理数量与范围批准,超出已批准边界需重新征询。
- 设计仅面向本地开发,生产镜像、密钥、部署、证书与运行时拓扑保持分离。
- 检查结果作为证据而非权威,不确定的发现需从源文件确认且不打印密钥值。
- 保留既有 Docker 文件与无关的工作区改动;重大技术栈变更保留语义差异。卷删除、破坏性重置与数据迁移需要覆盖这些影响的授权。
- 仅生成项目使用或用户明确要求的服务;项目使用 SQLite、主机服务或外部数据库时数据库服务非必需。
- 优先直接前台命令与每个服务单一职责;仅在项目已有要求或需要生产一致性测试时添加 Supervisor 或 PM2。
- 优先稳定顶层 Compose 名称与基于角色的服务名;默认不设置 container_name,因其阻碍服务扩缩容并造成跨项目冲突。
- 镜像选择依据项目约束、团队或生产兼容性、可信发布者、受支持版本与架构;已下载镜像仅作为次要考虑。避免在生成文件中使用浮动 latest 标签。
- 仅发布主机所需的端口;本地专用端口默认绑定 127.0.0.1,数据库、缓存、SMTP、PHP-FPM 与内部 API 尽量不暴露。
- 密钥不得出现在提交文件、生成文档、命令输出以及前端或代理容器中;需要配置时生成被忽略的本地环境文件与安全示例。
- 迁移、种子数据、CMS 安装器、破坏性清理或数据库写入测试仅在授权覆盖其数据影响时运行;仅请求配置容器不意味着这些操作被授权。
- 主机端口注册表为可选项;创建或刷新会扫描当前项目之外的范围并记录本地路径,需先获得扫描根与输出路径的授权,命令为:node "<skill-directory>/scripts/scan-host-ports.mjs" --root "<approved-root>" --out "$PORT_REGISTRY_FILE" --yes。已注册端口即使当前无进程监听也视为已占用;单项目且无注册表时,实时端口检查即可。
- 生成文件与报告中不得出现密钥、生产数据、私有域名或未经授权的修改。
验收标准
- 生成的 Compose 配置可解析且无未解析占位符。
- 所选镜像与命令符合项目约束,不含未审查的浮动标签。
- 应用容器通过 Compose 服务名而非 localhost 访问依赖。
- 可选服务不存在或由 profile 门控。
- 主机端口最小化、无冲突,且除请求更广访问外绑定回环地址。
- 健康检查调用镜像内可用命令,并测试就绪状态而非仅进程存在。
- 源变更按预期重载;锁文件变更遵循文档化的安装或重建路径。
- 生成文件或报告中不出现密钥、生产数据、私有域名或未经授权的变更。
费用与平台信息
资料未提供收费、价格或支持平台的具体说明。