启动基于容器的(开发)环境的最佳实践

Best practice for spinning up container-based (development) environments

OCI 容器是一种为项目打包合适的工具链的便捷方式,这样开发环境就可以保持一致,新的项目成员可以通过简单地签出项目并拉取相关容器来快速启动。

但是,启动带有编译器的容器来构建项目需要 docker (or podman) 命令行上的很多选项。除了图片名称,通常是:

然后它会因其他因素而变得更加复杂。例如。如果开发人员在不同的部门并且无法访问相同的 docker 存储库,则他们的图像可能会被不同地调用,因为 docker does not support symbolic names of repositories (podman 确实如此。

是否有一些标准(大概)的方式来处理这些选项,或者每个人都只是使用临时包装脚本?

我使用 Visual Studio Code Remote - Containers extension 将源代码连接到一个 Docker 容器,该容器包含构建代码所需的所有工具(例如 npm 模块,ruby gemseslint、Node.JS、java)。该容器包含所有 "tools" 用于 develop/build/test 的源代码。

此外,您还可以将 VSCode 扩展放入 Docker 映像中,以帮助保持 VSCode IDE 工具的可移植性。 https://code.visualstudio.com/docs/remote/containers#_managing-extensions

您可以在源代码中提供一个Docker文件给新手build the Docker image themselves or attach VSCode to an existing Docker container

如果您需要 运行 Docker 容器内的服务器进行测试,您可以 expose a port on the container 通过 VSCode,然后开始访问容器内的服务器使用浏览器或来自主机的 cURL

注意 known limitations to Visual Studio Code Remote - Containers extension. The one that impacts me the most is the beta support for Alphine Linux。我经常注意到一些流行的 Docker Hub 图像是基于 Alphine 的。