首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jib和Gitlab-CI构建docker镜像

使用Jib和Gitlab-CI构建docker镜像
EN

Stack Overflow用户
提问于 2019-02-14 13:10:13
回答 5查看 4.6K关注 0票数 0

我正在尝试创建一个管道,其中使用JIB (通过Maven插件)创建docker图像,并将其推送到我的Gitlab注册表。

当我登录到docker注册表时,这在本地工作得很好。

代码语言:javascript
复制
<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>1.0.0</version>
    <configuration>
        <allowInsecureRegistries>true</allowInsecureRegistries>
        <from>
            <image>dockerhost/projectgroup/alpine</image>
        </from>
        <to>
            <image>dockerhost/project/imagename:${project.version}</image>
        </to>
        <container>
            <useCurrentTimestamp>true</useCurrentTimestamp>
        </container>
    </configuration>
</plugin>

代码语言:javascript
复制
stages:
  - build_image

build_image:
  stage: build_image
tags:
  - dev
script: |
  mvn compile jib:build

代码语言:javascript
复制
Build image failed: Failed to authenticate with registry dockerhost/projectgroup/alpine because: peer not authenticated

我假设我收到这个错误是因为我还没有运行docker登录-u用户名-p密码/令牌

我需要一个.gitlab-ci.yml来使用docker-in-docker镜像才能在我的脚本中运行docker login吗?

在我的Gitlab CI上有没有使用docker-in-docker镜像构建此镜像的替代方案?

EN

回答 5

Stack Overflow用户

发布于 2020-12-03 00:03:08

从GitLab 9.0开始,所有necessary variables are available by default

  • CI_REGISTRY --项目的registry
  • CI_REGISTRY_IMAGE --项目的基本镜像名称registry
  • CI_REGISTRY_USER --可以访问项目的技术用户registry
  • CI_REGISTRY_PASSWORD --该用户的密码/令牌

因此,您可以使用以下命令构建和发布镜像:

代码语言:javascript
复制
mvn compile jib:build \
    -Djib.to.auth.username=${CI_REGISTRY_USER} \
    -Djib.to.auth.password=${CI_REGISTRY_PASSWORD} \
    -Djib.to.image=${CI_REGISTRY_IMAGE}:latest

您还可以使用Maven settings,就像您通常在Maven注册中心上进行身份验证一样。

票数 5
EN

Stack Overflow用户

发布于 2019-09-21 01:40:42

使用GitLab,您可以定义秘密的环境变量,您可以使用这些变量将您的注册凭据传递给Jib。

使用Jib

  1. Define secret variables using gitlab
  2. Pass注册表凭据

mvn编译jib:build -depi.to.image=my- -Djib.to.auth.username=$REGISTRY_USER -image:最新的容器镜像

票数 3
EN

Stack Overflow用户

发布于 2021-08-22 10:21:36

对于Gradle用户:

代码语言:javascript
复制
 ./gradlew jib \
 -Djib.to.image=${CI_REGISTRY_IMAGE}:latest \
 -Djib.to.auth.username=${CI_REGISTRY_USER} \
 -Djib.to.auth.password=${CI_REGISTRY_PASSWORD}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54683567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档