禁用特定 RUN 命令的缓存

新手上路,请多包涵

我的 Dockerfile 中有一些 RUN 命令,我想在每次构建 Docker 映像时使用 -no-cache 运行这些命令。

我了解 docker build --no-cache 将禁用整个 Dockerfile 的缓存。

是否可以禁用特定 RUN 命令的缓存?

原文由 Vingtoft 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

总有一个选项可以在要禁用缓存的区域之前插入一些无意义且运行成本低的命令。

正如 本期评论 中所提议的,可以添加一个构建参数块(名称可以是任意的):

 ARG CACHEBUST=1

在这样的区域之前,并通过添加 --build-arg CACHEBUST=$(date +%s) 作为 docker build 参数来修改每次运行的值(值也可以是任意的,这里是当前日期时间,以确保其在运行中的唯一性)。

当然,这也会禁用所有后续块的缓存,因为中间图像的哈希总和会有所不同,考虑到 docker 当前的工作方式,这使得真正的选择性缓存禁用是一个不小的问题。

原文由 Vladislav 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进