用途:诊断 devcontainer 与 Docker 开发环境问题,帮助创建可复现、启动快、在 VS Code、GitHub Codespaces 和团队成员间表现一致的开发环境。
适用时机:搭建新 devcontainer、容器启动过慢、配置错误或冲突、VS Code 与 Codespaces 行为不一致、需要多服务开发环境。不适用于编写应用代码、部署生产、配置 CI/CD。
核心原则:开发容器应带来即时生产力,每个配置选择都会影响启动时间、可复现性与团队上手成本,需明确这些取舍。
诊断状态:DV0 无 devcontainer 策略(手动搭建、依赖 README、换机器即失败),建议从预构建基础镜像开始并使用 assets/devcontainer-simple.md 模板;DV1 启动慢(5 分钟以上、postCreateCommand 过重),建议把 npm install/pip install 移入 Dockerfile 以利用缓存、使用 mcr.microsoft.com/devcontainers/* 基础镜像、为团队仓库配置 prebuilds,并运行 scripts/analyze-devcontainer.ts;DV2 配置问题(JSON 错误、VS Code 无法连接、features 冲突),检查 devcontainer.json 通过 JSON 校验、image/build.dockerfile/dockerComposeFile 只用其一、features 兼容且顺序正确、扩展使用 publisher.extension-name 格式;DV3 环境差异(本地可用 Codespaces 失败或反之),常见差异包括 Docker socket(本地通常可用,Codespaces 需 Docker-in-Docker)、密钥(本地用 .env,Codespaces 用 secrets)、文件监听(本地原生,Codespaces 可能需轮询);DV4 多服务复杂(需数据库/缓存/队列、服务间无法通信),建议用 Docker Compose 集成、命名卷持久化、健康检查,并使用 assets/devcontainer-compose.md 模板;DV5 Dockerfile 问题(构建失败、镜像过大、无缓存),建议依赖先装、代码后拷以利用缓存;DV6 已验证(启动 2 分钟内、VS Code 与 Codespaces 均可用、新成员 30 分钟内上手)。
可用脚本:analyze-devcontainer.ts 查找问题与优化,deno run --allow-read scripts/analyze-devcontainer.ts;validate-dockerfile.ts 检查 Dockerfile 最佳实践,deno run --allow-read scripts/validate-dockerfile.ts;scan-image.ts 漏洞扫描(封装 Trivy),deno run --allow-run scripts/scan-image.ts [image]。
反模式:大而全(安装所有工具导致启动 10 分钟以上,应最小化按需添加);postCreateCommand 过载(所有操作都放其中且每次运行,应把稳定操作移入 Dockerfile);雪花容器(在运行容器内手动修改,所有变更应写入配置文件)。
模板:assets/devcontainer-simple.md 基础单容器;assets/devcontainer-dockerfile.md 自定义 Dockerfile;assets/devcontainer-compose.md 多服务。相关技能:system-design、pwa-development。