dockerfile - 为什么 Kaniko 无法推送多阶段 Docker Image?

标签 dockerfile gitlab-ci kaniko

使用 Kaniko 在 GitLab CI 上构建以下 Dockerfile,导致错误推送图像错误:无法推送到目标 eu.gcr.io/stritzke-enterprises/eliah-speech-server:latest: Get https://eu.gcr.io/...: 退出状态 1

如果我从 Dockerfile 中删除第一个 FROMRUNCOPY --from 语句,则会构建 Docker 镜像并将其推送为预期的。如果我在本地计算机上使用 Docker 执行 Kaniko 构建,一切都会按预期进行。我执行其他 Kaniko 构建,并使用相同的 GCE 服务帐户凭据推送到同一个 GitLab CI 运行器上。

基于 GitLab CI 的 Kaniko 构建出了什么问题?

Dockerfile

FROM alpine:latest as alpine

RUN apk add -U --no-cache ca-certificates

FROM scratch

COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

COPY binaries/speech-server /speech-server

EXPOSE 8080
ENTRYPOINT ["/speech-server"]
CMD ["serve", "-t", "$GOOGLE_ACCESS_TOKEN"]

GitLab CI 构建阶段

buildDockerImage:
  stage: buildImage
  dependencies:
    - build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  variables:
    GOOGLE_APPLICATION_CREDENTIALS: /secret.json
  script:
    - echo "$GCR_SERVICE_ACCOUNT_KEY" > /secret.json
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $DOCKER_IMAGE:latest -v debug
  only:
    - branches
  except:
    - master

最佳答案

tdensmore pointed out这很可能是身份验证问题。

因此,对于来到这里的每个人来说,以下 Dockerfile 和 Kaniko 调用都可以正常工作。

FROM ubuntu:latest as ubuntu

RUN echo "Foo" > /foo.txt

FROM ubuntu:latest

COPY --from=ubuntu /foo.txt /

CMD ["/bin/cat", "/foo.txt"]

可以通过运行来构建Dockerfile

docker run -v $(pwd):/workspace gcr.io/kaniko-project/executor:latest --context /workspace --no-push

关于dockerfile - 为什么 Kaniko 无法推送多阶段 Docker Image?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53578399/

相关文章:

docker - 波浪号扩展在 Docker COPY 命令中不起作用

docker - 在特定进程的开发环境中以非 root 身份运行 docker

android - Gradle CI Gitlab CURL文件路径无法加载

node.js - 无法使用 Puppeteer -- 错误 : Failed to launch chrome

组下所有项目的Gitlab API

dockerfile - 如何在 kaniko 中为多阶段 Dockerfile 指定构建目标?

docker - 如何使用基于 kaniko 的 gitlab-runner 构建 node.js 镜像?

java - 如何在 python :3. 8-slim-buster 基础镜像中使用 dockerfile 安装 java 8

docker - 如何在 Google Cloud Build 中为 Kaniko 使用非执行入口点(启用构建参数定义)

docker - 如何在 Docker 镜像中写入文件?