有条件地忽略 COPY 上的 .dockerignore 文件
Conditionally ignoring a .dockerignore file on COPY
我有一个前端构建,它使用 Dockerfile 的变体进行多个步骤:开发、CI(使用 Jenkins)和生产。我不想连续下载 node_modules 用于 CI 和生产构建图像(两者都连续发生在同一个盒子上)。 Dev 的 node_modules 托管在一个卷上以降低重新启动开发容器的开销。
三个阶段共享同一个 .dockerignore
文件,其中有一行不包括 node_modules
。是否可以通过 COPY node_modules/* node_modules/
之类的方式添加 node_modules?我徒劳地搜索了一种在 CI 和生产构建的构建部分使用绑定安装的方法。这似乎是不可能的。
目前无法提供不同的 .dockerignore
文件。
作为替代方案,您可以在主机上使用 cp
将 node_modules
复制到不同的目录,例如 ./node_new_module
或者可能将该 cp
命令集成到您的CI.
之后您可以使用新的 ./node_new_module
复制 Dockerfile 中的节点模块 -
COPY ./node_new_modules/* node_modules/
希望这对您有所帮助或提供解决此问题的方法。
我有一个前端构建,它使用 Dockerfile 的变体进行多个步骤:开发、CI(使用 Jenkins)和生产。我不想连续下载 node_modules 用于 CI 和生产构建图像(两者都连续发生在同一个盒子上)。 Dev 的 node_modules 托管在一个卷上以降低重新启动开发容器的开销。
三个阶段共享同一个 .dockerignore
文件,其中有一行不包括 node_modules
。是否可以通过 COPY node_modules/* node_modules/
之类的方式添加 node_modules?我徒劳地搜索了一种在 CI 和生产构建的构建部分使用绑定安装的方法。这似乎是不可能的。
目前无法提供不同的 .dockerignore
文件。
作为替代方案,您可以在主机上使用 cp
将 node_modules
复制到不同的目录,例如 ./node_new_module
或者可能将该 cp
命令集成到您的CI.
之后您可以使用新的 ./node_new_module
复制 Dockerfile 中的节点模块 -
COPY ./node_new_modules/* node_modules/
希望这对您有所帮助或提供解决此问题的方法。