我正在使用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和docker都出现在我的java映像中。
我不知道有哪张图片同时包含了这两个元素。
如何解决这个问题?
发布于 2021-03-17 00:56:02
一位同事给了我一个提示,我想我应该把它分享给其他人。
您可以在注册Gitlab运行器时,使用套接字绑定授予它对docker守护程序的访问权限。然后,您可以在非docker映像中使用它。
official documentation解释了这一点。
作为参考,我使用以下命令注册我的runner:
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
发布于 2021-03-17 00:14:14
如果你还没有,你可以看看Jib:https://www.baeldung.com/jib-dockerizing。它允许您在没有docker守护进程运行的情况下构建和推送docker镜像。它添加了一个插件依赖项和一些配置,但它只允许您使用jdk镜像。
https://stackoverflow.com/questions/66658487
复制相似问题