我的 Dockerfile 中有一些 RUN
命令,我想在每次构建 Docker 映像时使用 -no-cache
运行这些命令。
我了解 docker build --no-cache
将禁用整个 Dockerfile 的缓存。
是否可以禁用特定 RUN 命令的缓存?
原文由 Vingtoft 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的 Dockerfile 中有一些 RUN
命令,我想在每次构建 Docker 映像时使用 -no-cache
运行这些命令。
我了解 docker build --no-cache
将禁用整个 Dockerfile 的缓存。
是否可以禁用特定 RUN 命令的缓存?
原文由 Vingtoft 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答810 阅读✓ 已解决
1 回答683 阅读✓ 已解决
1 回答626 阅读
总有一个选项可以在要禁用缓存的区域之前插入一些无意义且运行成本低的命令。
正如 本期评论 中所提议的,可以添加一个构建参数块(名称可以是任意的):
在这样的区域之前,并通过添加
--build-arg CACHEBUST=$(date +%s)
作为docker build
参数来修改每次运行的值(值也可以是任意的,这里是当前日期时间,以确保其在运行中的唯一性)。当然,这也会禁用所有后续块的缓存,因为中间图像的哈希总和会有所不同,考虑到 docker 当前的工作方式,这使得真正的选择性缓存禁用是一个不小的问题。