背景
本地编译器与 CI 相差一个版本,就可能出现本地通过、流水线失败。开发容器的价值是把工具链依赖写成可审查的输入。
核心判断
- 镜像、扩展和服务依赖都记录在配置里,CI 使用相同版本约束。
- 依赖下载放在创建阶段,调试端口、工作目录和用户权限显式声明。
- 需要严格复现时锁定镜像 digest,更新版本通过独立变更完成。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
{ "image": "mcr.microsoft.com/devcontainers/go:1-1.24-bookworm", "postCreateCommand": "go mod download" }
边界与误区
示例中的版本只是固定版本示意,不是最新版本建议。容器不会自动统一宿主机内核、CPU 架构或文件系统行为。
验证方式
从干净环境重新创建容器,执行测试与构建;同时在实际部署架构验证产物,尤其注意 Raspberry Pi 与开发电脑的架构差异。
小结
开发容器应固定编译器、CLI 和服务依赖,并让 CI 使用同一套版本约束。