Docker 加速基于容器(开发)环境的最佳实践
OCI容器是为项目打包合适的工具链的一种方便方式,这样开发环境是一致的,新的项目成员只需签出项目并拉取相关容器即可快速启动Docker 加速基于容器(开发)环境的最佳实践,docker,podman,Docker,Podman,OCI容器是为项目打包合适的工具链的一种方便方式,这样开发环境是一致的,新的项目成员只需签出项目并拉取相关容器即可快速启动 当然,我并不是在谈论那些只需要C++编译器或NoDE.js的项目。我指的是需要特定编译器包的项目,这些编译器包不适用于比Fedora 22更新的版本;需要手动将特殊工具安装到陌生位置的项目;需要使用不可同时安装的工具的多个项目等等。对于这类事情,拥有一个容器要比遵循二十个安装步骤,然后祈祷上一个项目留下的碎片不会破坏你的东西更容易 但是,使用编译器启动容器以构建项目需要
-
当然,我并不是在谈论那些只需要C++编译器或NoDE.js的项目。我指的是需要特定编译器包的项目,这些编译器包不适用于比Fedora 22更新的版本;需要手动将特殊工具安装到陌生位置的项目;需要使用不可同时安装的工具的多个项目等等。对于这类事情,拥有一个容器要比遵循二十个安装步骤,然后祈祷上一个项目留下的碎片不会破坏你的东西更容易
- 装载项目工作目录
- 用户id(因为容器应该以运行它的用户的身份访问装载的文件)
- 如果该工具需要访问某些网络资源,则可能还需要
- 通过环境或其他方式提供一些凭据
- ssh代理套接字(装载和环境变量)
- 如果构建过程涉及构建docker容器
- docker插座(安装);但在没有特殊设置的情况下也可以工作
- 如果是图形工具(例如IDE)
- X套接字安装和环境变量
使共享内存工作——ipc主机
npm
模块、rubygems
、eslint
、Node.JS、java
)。容器包含用于开发/构建/测试源代码的所有“工具”
此外,您还可以将VSCode扩展放入Docker映像中,以帮助保持VSCode IDE工具的可移植性。
您可以在源代码中为新来者提供Dockerfile,或将VSCode附加到源代码
如果出于测试目的需要在Docker容器内运行服务器,可以通过VSCode,并开始使用浏览器或主机上的cURL
访问容器内的服务器
请注意Visual Studio代码远程容器扩展。对我影响最大的是。我经常注意到一些流行的Docker Hub图像是基于Alphine的。观点:Docker不是打包面向桌面的应用程序或开发人员工具的好工具。如果需要节点,请安装节点;不要只是为了“安装”你需要的工具而浏览整个清单。@DavidMaze,这有两个主要问题:1。不同的项目需要相同工具的不同版本,通常是古老的,以及2。当然,它不是一个单一的工具,而是一个包含20个依赖项的列表,不是所有依赖项都可以从一个包中安装。docker清单要短得多。请记住,包装器脚本只编写一次,每个人都会使用,但安装说明将每隔一个月由某人运行一次。FWIW,我使用
visualstudio code Remote-Containers
扩展将代码库所需的工具链放入Docker映像中。这个扩展仍然是新的,所以对于什么样的Linux发行版可以用于docker映像的基础是有限制的@Kin,这可能是一个有意义的答案VSCode很可能很快让它流行起来。他们的方法是启动一个持久容器,其中包含无限睡眠作为主命令,并在其中执行命令,但它可能比我开始使用的临时容器更有意义,特别是因为一些开发工具启动后台进程。远程容器还支持docker compose,这使得任何不想使用vscode的人都可以从命令行轻松地使用容器。它不太远程,如果vscode希望docker在本地运行。我和波德曼试过了,但没有成功。如有任何建议,将不胜感激。