在开发过程中使用 docker 到 运行 前端构建过程是个坏主意吗?
Is it a bad idea to use docker to run a front end build process during development?
我有一个 angular 项目正在容器化。它目前有足够的构建工具,前端开发人员可以(这就是它目前的工作方式)只需在项目根目录中 运行 gulp,编辑 src/ 中的源文件,以及构建工具句柄运行宁 traceur、模板和 libsass 等等,将内容吐到构建目录中。该构建目录在开发中由最小服务器提供,并在生产中由 nginx 处理。
我的目标是构建一个基于 docker 的环境来复制此工作流程。我的用户是使用不同类型盒子的开发人员,因此将构建依赖项冻结在 docker 文件中似乎很有意义。
我已经足够接近这个了- docker 安装主机卷,开发人员编辑本地磁盘上的文件,gulp 构建观察器正在 运行ning在 docker 容器实例中重建站点(并触发 livereload 等)。
我的问题是围绕文件系统层的工作方式进行思考。这个在容器的 build/frontend 目录中重建文件的过程是否会生成大量无关的保存层?这不是我真正喜欢的东西,因为当开发人员调整和重建、调整和重建时,我不喜欢单调地增长这个实例。它只会在本地生长,但必须经历 "okay, time to clean up and start over" 过程似乎很乏味。
Is this process of rebuilding files in the container's build/frontend directory generating a ton of extraneous saved layers?
不,堆叠额外层的唯一方法是提交对新图像进行更改的容器,然后使用该新图像创建下一个容器。冲洗,重复。
当容器提交给新图像时,文件系统层被保存 (docker commit ...
)。当容器 运行ning 时,顶部将有一个 read/write 层,其中包含自创建容器以来对容器所做的所有更改。
having to go through the "okay, time to clean up and start over" process seems tedious.
如果您 运行 使用 docker run --rm ...
构建容器,那么您将免费获得清理。每次都会从图像中重新创建构建容器。
此外,数据卷会绕过联合文件系统,因此您很有可能根本不会写入容器的文件系统。
我有一个 angular 项目正在容器化。它目前有足够的构建工具,前端开发人员可以(这就是它目前的工作方式)只需在项目根目录中 运行 gulp,编辑 src/ 中的源文件,以及构建工具句柄运行宁 traceur、模板和 libsass 等等,将内容吐到构建目录中。该构建目录在开发中由最小服务器提供,并在生产中由 nginx 处理。
我的目标是构建一个基于 docker 的环境来复制此工作流程。我的用户是使用不同类型盒子的开发人员,因此将构建依赖项冻结在 docker 文件中似乎很有意义。
我已经足够接近这个了- docker 安装主机卷,开发人员编辑本地磁盘上的文件,gulp 构建观察器正在 运行ning在 docker 容器实例中重建站点(并触发 livereload 等)。
我的问题是围绕文件系统层的工作方式进行思考。这个在容器的 build/frontend 目录中重建文件的过程是否会生成大量无关的保存层?这不是我真正喜欢的东西,因为当开发人员调整和重建、调整和重建时,我不喜欢单调地增长这个实例。它只会在本地生长,但必须经历 "okay, time to clean up and start over" 过程似乎很乏味。
Is this process of rebuilding files in the container's build/frontend directory generating a ton of extraneous saved layers?
不,堆叠额外层的唯一方法是提交对新图像进行更改的容器,然后使用该新图像创建下一个容器。冲洗,重复。
当容器提交给新图像时,文件系统层被保存 (docker commit ...
)。当容器 运行ning 时,顶部将有一个 read/write 层,其中包含自创建容器以来对容器所做的所有更改。
having to go through the "okay, time to clean up and start over" process seems tedious.
如果您 运行 使用 docker run --rm ...
构建容器,那么您将免费获得清理。每次都会从图像中重新创建构建容器。
此外,数据卷会绕过联合文件系统,因此您很有可能根本不会写入容器的文件系统。