1

OCI 容器是一种为项目打包合适工具链的便捷方式,使开发环境保持一致,新项目成员只需签出项目并拉取相关容器即可快速启动。

  • 当然,我不是在谈论只需要 C++ 编译器或 Node.JS 的项目。我说的是需要特定编译器包的项目,这些包不适用于比 Fedora 22 更新的版本,需要手动安装到陌生地方的特殊工具的项目,在具有不可共同安装的工具的多个项目上工作等等. 对于这类事情,拥有一个容器比遵循二十个安装步骤然后祈祷之前项目留下的部分不会为您破坏事情要容易得多。

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

  • 挂载项目工作目录
  • 用户 ID(因为容器应该在用户运行它时访问挂载的文件)
  • 如果该工具需要访问某些网络资源,它可能还需要
    • 一些凭据,通过环境或其他方式
    • ssh 代理套接字(挂载和环境变量)
  • 如果构建过程涉及构建 docker 容器
    • 码头插座(安装);buildah可以在没有特殊设置的情况下工作
  • 如果是图形工具(例如 IDE)
    • X 套接字安装和环境变量
    • --ipc host使共享内存工作

然后它可能会因其他因素而变得更加复杂。例如,如果开发人员位于不同的部门并且无法访问同一个 docker 存储库,则他们的图像可能会以不同的方式调用,因为docker不支持存储库的符号名称(尽管podman支持)。

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

4

1 回答 1

2

我使用Visual Studio Code Remote - Containers 扩展将源代码连接到 Docker 容器,该容器包含构建代码所需的所有工具(例如npm模块、ruby gems、、eslintNode.JS、java)。该容器包含用于开发/构建/测试源代码的所有“工具”。

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

您可以在源代码中提供一个 Dockerfile 供新手自己构建 Docker 映像或将 VSCode 附加到现有的 Docker 容器

如果您需要在 Docker 容器内运行服务器以进行测试,您可以通过 VSCode在容器上公开一个端口cURL,然后使用浏览器或从主机开始访问容器内的服务器。

请注意Visual Studio Code Remote - Containers 扩展的已知限制。对我影响最大的是对 Alphine Linux 的 beta 支持。我经常注意到一些流行的 Docker Hub 镜像是基于 Alphine 的。

于 2019-08-09T15:53:00.910 回答