有条件地忽略 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 文件。

作为替代方案,您可以在主机上使用 cpnode_modules 复制到不同的目录,例如 ./node_new_module 或者可能将该 cp 命令集成到您的CI.

之后您可以使用新的 ./node_new_module 复制 Dockerfile 中的节点模块 -

COPY ./node_new_modules/* node_modules/

希望这对您有所帮助或提供解决此问题的方法。