微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 kaniko 从 GitLab CI 构建 Docker 映像并将其推送到私有Artifactory

如何解决无法使用 kaniko 从 GitLab CI 构建 Docker 映像并将其推送到私有Artifactory

我正在设计一个 GitLab CI 管道来为给定的服务构建一个 Docker 镜像。

这是迄今为止 Gitlab CI 清单(相关摘录)的样子:

...

publish-docker-image:
  stage: publish
  dependencies:
    - assemble
  image:
    name: docker.tld.com/namespace/kaniko:latest # At work they offer a custom kaniko image
    entrypoint: [""]
  script:
    - mkdir --parents /kaniko/.docker/
    - mv $kaniko_config /kaniko/.docker/config.json # $kaniko_config is a file variable from GitLab CI
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0

$kaniko_config 文件转换为这个 JSON:

{
  "auths": {
    "https://artifactory.tld.com/": {
      "username": "the_real_username","password": "the_real_password"
    }
  }
}

现在每次运行管道时我都会得到这个输出

$ mkdir --parents /kaniko/.docker/
$ mv $kaniko_config /kaniko/.docker/config.json
$ cat /kaniko/.docker/config.json
{
  "auths": {
    "https://artifactory.tld.com/": {
      "username": "the_real_username","password": "the_real_password"
    }
  }
}
$ /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0
error checking push permissions -- make sure you entered the correct tag name,and that you are authenticated correctly,and try again: checking push permission for "artifactory.tld.com/artifactory/docker-snapshot/organization/project/kaniko-test:0.1.0": creating push check transport for artifactory.tld.com Failed: GET https://artifactory.tld.com/v2/: : Not Found
Cleaning up file based variables

在这里做错了什么?此外,我不知道为什么错误消息上有 https://artifactory.tld.com/v2//v2),因为我没有使用类似的东西。

解决方法

致以后遇到此问题的任何人 - kaniko-config.json 文件应具有以下结构:

{
  "auths": {
    "<artifactory-docker-registry>": {
      ...
    }
  }
}

可以使用 JFrog 平台 UI 中的 Set Me Up 按钮检索“artifactory-docker-registry”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?