有条件地忽略 COPY 上的 .dockerignore 文件
Posted
技术标签:
【中文标题】有条件地忽略 COPY 上的 .dockerignore 文件【英文标题】:Conditionally ignoring a .dockerignore file on COPY 【发布时间】:2018-06-29 11:53:45 【问题描述】:我有一个前端构建,它使用 Dockerfile 的变体进行多个步骤:开发、CI(使用 Jenkins)和生产。我不想连续下载用于 CI 和生产构建图像的 node_modules (两者都在同一个盒子上连续发生)。 Dev 的 node_modules 托管在一个卷上,以降低重新启动 dev 容器的开销。
三个阶段都共享同一个.dockerignore
文件,其中有一行不包括node_modules
。是否可以通过COPY node_modules/* node_modules/
之类的方式添加 node_modules?我徒劳地寻找一种在 CI 和生产构建的构建部分使用绑定挂载的方法。这似乎是不可能的。
【问题讨论】:
你能在你想要COPY node_modules/* node_modules/
的环境中使用不同的Dockerfile
吗?
@vivekyad4v 是的,已经是这样了。
【参考方案1】:
目前没有这样的方式可以提供不同的.dockerignore
文件。
作为替代方案,您可以在主机上使用cp
将node_modules
复制到不同的目录,例如./node_new_module
,或者可能将cp
命令集成到您的CI 中。
之后,您可以使用新的./node_new_module
复制 Dockerfile 中的节点模块 -
COPY ./node_new_modules/* node_modules/
希望这对您有所帮助或提供解决此问题的方法。
【讨论】:
以上是关于有条件地忽略 COPY 上的 .dockerignore 文件的主要内容,如果未能解决你的问题,请参考以下文章