首页 > 解决方案 > 在 Gitlab CI 中构建和推送 Spring Boot maven 插件 docker 镜像

问题描述

我正在使用 Gitlab CI 构建我的 Spring Boot 项目映像并将映像推送到容器注册表。

我的.gitlab-ci.yml样子如下:

stages:
  - buildImage

project-build:
  stage: buildImage
  image: openjdk:8u282-jdk
  script:
    - ./mvnw verify
    - ./mvnw spring-boot:build-image
  tags:
    - docker

此配置失败,因为 docker 镜像需要 docker exec 才能将镜像推送到容器注册表。我尝试使用相同的配置image: docker,但它失败了,因为 maven 需要 java 才能运行。

因此,为了使用该./mvnw spring-boot:build-image命令,我的 java 映像中需要同时存在 java 和 docker。

我不知道任何包含两者的图像。

如何解决这个问题?

标签: spring-bootdockergitlab-ci

解决方案


一位同事给了我一个提示,我想我会与其他人分享。

当你注册你的 Gitlab 运行器时,你可以使用套接字绑定授予它访问你的 docker dameon 的权限。然后,您可以在非 docker 映像中使用它。

官方文档解释了这一点。

作为参考,我使用以下命令注册我的跑步者:

gitlab-runner register --non-interactive --url https://<my-gitlab>/ --registration-token <my-token> --executor docker --docker-image docker:19.03 --docker-volumes /var/run/docker.sock:/var/run/docker.sock


推荐阅读