众所周知,配置开发环境一直是个繁琐问题,多分支同时开发时,切换环境更是痛苦,通过容器辅助开发也是我们常用的手段。个人习惯会在宿主机跑 Docker 容器作为临时运行环境,然后通过 volume 的方式绑定本地的文件系统,但开发环境而言还是会依赖个人的本地配置。
随着 VSCode Remote 的成熟,单独配置开发容器环境也变得可行,可以做得非常灵活和干净,随时随地都可起一个船新开发环境,慢慢衍生出了 microsoft/vscode-dev-containers 类似的通用环境配置,再进化成了一个开源社区,做编辑器 / IDE 无关的通用标准。(但看他的 Supporting tools 其实还是 VSCode 和 Visual Studio,还有 GitHub Codespaces,基本是微软家在支持)。
社区官网:https://containers.dev
他定义了一个标准的 spec,主要有这三部分
devcontainer.json
: 描述一个开发容器环境涉及到的方方面面的配置,并可以用 Git 管理和共享
- base Images: 开发环境基础镜像,支持 Docker / Docker Compose 自定义
- features: 集合各类 feature 的安装、配置脚本,自动在基础镜像之上配置各个依赖的 feature 组件。feature 可以相互组合,给开发环境增加对应能力,方便共享和复用
参考 Development Container CLI,这一整套东西的目的是在不同的使用场景都能保持一致性,避免因为环境问题消耗太多时间。
主要涉及到的场景:
- 个人本地开发环境
- CI构建、单元测试环境
- 生产环境
在 VSCode 也有对应扩展实现,参见 Dev Container Features。
感觉还是挺有意思,搞得好的话,可以节约不少版本依赖折腾的时间精力消耗。所以我在打算基于此整个 Flarum 论坛的开发环境,让参与的门槛低一些。