Kaniko 不使用缓存选项

问题描述 投票:0回答:2

我正在尝试使用 kaniko 执行器的 --cache-repo 选项,但我发现它不使用我在 ECR/AWS 中保存的缓存,并且 gitlab 日志返回此信息;

Checking for cached layer [MASKED]/dev-cache:627d56ef7c151b98c02c0de3d3d0d9a5bc8d538b1b1d58632ef977f4501b48f4...
INFO[0521] No cached layer found for cmd COPY --from=build /../../../../..............

我已经使用相同的标签重建了图像,代码没有改变,但仍然需要相同的时间...

我使用的kaniko版本是以下gcr.io/kaniko-project/executor:v1.9.1

这些是我在 kaniko 中使用的标志:

  /kaniko/executor --cache=true \
    --cache-repo "${URL_ECR}/dev-cache" \
    --cache-copy-layers \
    --single-snapshot \
    --context "${CI_PROJECT_DIR}" ${BUILD_IMAGE_EXTRA_ARGS} \
    --dockerfile "${CI_PROJECT_DIR}/Dockerfile" \
    --destination "${IMAGE_NAME}:${IMAGE_TAG}" \
    --destination "${IMAGE_NAME}:latest" \
    --skip-unused-stages \
    --snapshotMode=redo \
    --use-new-run

你有什么想法吗?

build gitlab gitlab-ci kaniko
2个回答
3
投票

通过删除标志:--cache-copy-layers 和 --single-snapshot,并添加标志:--cleanup,成功解决了问题


0
投票

当我们将 --cache-repo 设置为 ECR repo url 时,kaniko 将所有层推送到 ecr repo 作为缓存,如果 dockerfile 有太多/多步指令,这会增加 ECR repo 存储大小。对于每个构建,它都会将缓存推送到 ecr 存储库。 我们是否可以选择如果 ECR 存储库中存在层缓存,则不再推送它?

@汤姆·萨利巴@安德烈斯·卡布雷拉

© www.soinside.com 2019 - 2024. All rights reserved.