强制 docker 构建“重建”一步

jkj*_*000 5 docker

我知道 docker 可以--no-cache=true选择强制干净地构建 docker 映像。然而,对我来说,我真正想做的就是强制在我的 dockerfile 中运行最后一步,这是一个CMD运行 shell 脚本的命令。

无论出于何种原因,当我修改该脚本并保存它时,典型的 docker 构建将重用该步骤的缓存版本。有没有办法强制 docker 不这样做,就在那个部分?

Von*_*onC 6

请注意,这将使该行之后所有Dockerfile 指令的缓存无效。这是在Issue 1996(尚未实施)中要求的。

当前的解决方法是

FROM foo
ARG CACHE_DATE=2016-01-01
<your command without cache>

docker build --build-arg CACHE_DATE=$(date) ....
Run Code Online (Sandbox Code Playgroud)

这将使ARG CACHE_DATE每次构建的行之后的缓存无效。

acdcjunior评论中报告必须使用:

docker build --build-arg CACHE_DATE=$(date +%Y-%m-%d_%H:%M:%S)
Run Code Online (Sandbox Code Playgroud)