2

我已经使用 kaniko(版本v1.6.0-debug)在 kubernetes 中设置了容器映像,但是当启用缓存()时,我最终遇到了以下问题/kaniko/executor --cache --cache-repo $CI_REGISTRY_IMAGE/cache

这是一个简化的 Dockerfile 来解释这个问题(真正的有一个 PHPpackage.jsonpackage.lock添加了新要求的文件)。

FROM busybox:1.33.1 AS builder
WORKDIR /root
COPY testfile testfile

FROM busybox:1.33.1 AS release
WORKDIR /root
COPY --from=builder /root/testfile testfile
RUN cat /root/testfile

如果testfile修改了,并且之前构建了 docker 映像(因此它的所有层都缓存在 docker 注册表中),则 kaniko 看不到任何修改并使用缓存的层

COPY --from=builder /root/testfile testfile

结果是最终的 docker 映像提供了文件的旧(缓存)版本,testfile而不是最后一个。

知道如何解决/缓解这个问题吗?当然,如果我从我们的 docker 存储库中删除缓存层,图像会正确构建,但禁用缓存对我来说不是一个选项,因为构建会太慢。

4

1 回答 1

1

升级到 Kaniko 1.7.0 可能会解决您的问题:https ://github.com/GoogleContainerTools/kaniko/pull/1735

于 2021-10-25T08:36:40.790 回答