You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kaniko构建多镜像并推送到GitLab同项目仓库遇权限问题求助

解决方案

核心思路

问题根源是Kaniko尝试推送的镜像仓库路径projs/devs/frontend-ecomm不存在,需将所有镜像的推送路径统一指向已存在的projs/devs/frontend仓库,通过不同标签区分多阶段构建出的两个镜像。

1. 调整镜像标签规则

为两个阶段的镜像设置带区分后缀的标签,确保推送路径匹配GitLab现有仓库:

  • 构建阶段镜像:gitlab.xxx.de:8085/projs/devs/frontend:builder-v38.3-54c2e0d7
  • 运行阶段镜像:gitlab.xxx.de:8085/projs/devs/frontend:runtime-v38.3-54c2e0d7

2. 配置Kaniko构建命令(GitLab CI场景)

分两次执行Kaniko构建,通过--target指定对应阶段,并推送至正确路径:

build-builder-image:
  stage: build
  image: gcr.io/kaniko-project/executor:debug
  script:
    # 生成Docker认证配置
    - echo "{\"auths\":{\"gitlab.xxx.de:8085\":{\"auth\":\"$(echo -n "$CI_REGISTRY_USER:$CI_REGISTRY_PASSWORD" | base64)\"}}}" > /kaniko/.docker/config.json
    # 构建并推送builder阶段镜像
    - /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
      --target builder
      --destination "gitlab.xxx.de:8085/projs/devs/frontend:builder-${CI_COMMIT_SHORT_SHA}"
      --cache=true

build-runtime-image:
  stage: build
  image: gcr.io/kaniko-project/executor:debug
  script:
    - echo "{\"auths\":{\"gitlab.xxx.de:8085\":{\"auth\":\"$(echo -n "$CI_REGISTRY_USER:$CI_REGISTRY_PASSWORD" | base64)\"}}}" > /kaniko/.docker/config.json
    # 构建并推送runtime阶段镜像
    - /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
      --target runtime
      --destination "gitlab.xxx.de:8085/projs/devs/frontend:runtime-${CI_COMMIT_SHORT_SHA}"
      --cache=true

3. (可选)Dockerfile添加阶段标记

在Dockerfile的每个阶段添加LABEL,方便后续识别镜像用途:

FROM node:18 AS builder
LABEL image-stage=builder
WORKDIR /app
COPY . .
RUN npm install && npm run build

FROM nginx:alpine AS runtime
LABEL image-stage=runtime
COPY --from=builder /app/dist /usr/share/nginx/html

关键注意事项

  • 确保Kaniko使用的CI_REGISTRY_USER和CI_REGISTRY_PASSWORD拥有projs/devs/frontend项目的镜像推送权限
  • 所有--destination参数必须严格匹配已存在的GitLab项目容器仓库路径,禁止使用不存在的frontend-ecomm路径
  • 通过标签后缀(如builder-、runtime-)区分不同阶段的镜像,避免相互覆盖

内容的提问来源于stack exchange,提问作者CodeWeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:37:21