【问题标题】:How to avoid the Docker build cache for a single command/RUN? [duplicate]如何避免单个命令/运行的 Docker 构建缓存? [复制]
【发布时间】:2023-03-17 10:57:01
【问题描述】:

我正在使用RUN ls /some/directoryDockerfile 进行“printf-debugging”。该命令运行一次且之前没有任何命令更改后,结果被缓存,不提供任何输出。

我可以用从未执行的部分更改命令,例如附加|| echo some changing number],这对于每次运行都很烦人,或者关闭构建缓存,这会影响更多RUNs,从而减慢Dockerfile的开发速度。

有没有一种方法可以只为一个 RUN 禁用缓存而没有任何上述缺点?

【问题讨论】:

  • @SebastianBrosch 感谢您提供更好的副本。我将我选择的问题标记为与您链接的问题的副本相同。我还在不同答案中链接的 moby 问题中添加了 cmets,这些问题似乎彼此重复。

标签: docker dockerfile


【解决方案1】:

使用构建 arg 是一种可接受的解决方案吗?

# Dockerfile
FROM alpine
RUN echo "executed 1"

# Above this will be cached, below will be retriggered with new builds
ARG BUILD

RUN echo "executed 2"

然后,使用不同的 build arg 编号运行以重新运行 ARG 以下的所有内容

$ docker build --build-arg BUILD=2 -t temp .

或者,使用date 作为内部版本号:

$ docker build --build-arg BUILD="$(date)" -t temp .

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2018-12-18
    • 2014-11-15
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多