在开发过程中使用docker运行前端构建过程是一个坏主意吗?

在开发过程中使用docker运行前端构建过程是一个坏主意吗?,docker,Docker,我有一个角度项目,我正在从事集装箱运输。它目前有足够的构建工具,前端开发人员只需在项目根目录中运行gulp,在src/中编辑源文件,构建工具就可以处理运行traceur、templates和libsass等,将内容放入构建目录。该构建目录在开发中由最小的服务器提供,并在生产中由nginx处理 我的目标是构建一个基于docker的环境来复制此工作流。我的用户是不同类型的开发人员,因此将构建依赖项冻结在dockerfile中似乎是有意义的 我已经足够接近这一点了——docker装载主机卷,开发人员编

我有一个角度项目,我正在从事集装箱运输。它目前有足够的构建工具,前端开发人员只需在项目根目录中运行gulp,在src/中编辑源文件,构建工具就可以处理运行traceur、templates和libsass等,将内容放入构建目录。该构建目录在开发中由最小的服务器提供,并在生产中由nginx处理

我的目标是构建一个基于docker的环境来复制此工作流。我的用户是不同类型的开发人员,因此将构建依赖项冻结在dockerfile中似乎是有意义的

我已经足够接近这一点了——docker装载主机卷,开发人员编辑本地磁盘上的文件,gulp build watcher在docker容器实例中运行并重建站点(并触发livereload等)

我所面临的问题是,我的脑子里总是想着文件系统层是如何工作的。在容器的build/frontend目录中重建文件的过程是否会生成大量无关的已保存层?这不是我真正想要的,因为我不喜欢随着开发人员不断调整和重建,不断调整和重建,单调地增长这个实例。它只会在本地增长,但必须经历“好的,是时候清理并重新开始”的过程似乎很乏味

在容器的build/frontend目录中重建文件的过程是否会生成大量无关的已保存层

不,堆叠额外层的唯一方法是提交一个容器,其中包含对新映像的更改,然后使用该新映像创建下一个容器。冲洗,重复

文件系统层在容器提交到新映像时保存(
docker commit…
)。当一个容器运行时,它的顶部将有一个读/写层,其中包含自容器创建以来对其所做的所有更改

必须经历“好的,是时候清理并重新开始”的过程似乎很乏味

如果您使用docker run--rm…运行构建容器,那么您将免费获得清理。每次都将从映像中新创建生成容器

此外,数据卷绕过联合文件系统,因此很有可能根本不会写入容器的文件系统