不要使用层缓存,但在使用 docker+buildkit 时一定要使用 mount-cache

hbo*_*ert 5 docker docker-buildkit

当使用 buildkit、使用 docker cli 前端时,我有时不想使用层缓存,但确实想依赖较新的挂载缓存类型。

RUN --mount=type=cache,target=...
Run Code Online (Sandbox Code Playgroud)

然而,跑步docker build --no-cache似乎会禁用两者。

有没有一种方法可以选择在重建期间仅使用安装缓存?

N1n*_*ngu 1

您可以通过使用始终会更改的层启动 Dockerfile 来绕过它,从而使所有后续缓存层无效。

一个具有不断变化的值的 ARG 就可以了。例如:

FROM whatever
ARG CACHE_EPOCH
# ... etc
Run Code Online (Sandbox Code Playgroud)
docker build --pull --build-arg CACHE_EPOCH=$(date +%s)
Run Code Online (Sandbox Code Playgroud)

(我有一个非常类似的需求/sf/answers/5109545171/)