SpringBoot 的 bootBuildImage 使用 Kaniko 而不是 Docker 守护进程

lat*_*ell 5 spring-boot kubernetes kaniko

SpringBoot 2.3 引入了通过运行./gradlew bootBuildImage而不是Dockerfile执行来创建 OCI/Docker 镜像的功能docker build .

在 Kubernetes 集群内运行的 Gitlab 构建服务器上构建时,虽然没有可用的 Docker 守护程序(出于安全原因,没有 docker-in-docker 服务)。相反,必须使用 Google 的“Kaniko”工具构建和上传图像。

是否可以以某种方式将两者结合起来,即在没有运行 Docker 守护程序的情况下使用“bootBuildImage”?

koe*_*koe 1

使用Podman可以实现这一点。Podman 包含一个实现 Docker 兼容 API 的守护进程。在本地计算机上,可以通过 启动podman system service --time 0 tcp://0.0.0.0:2375

在 Kubernetes 中(或者通常在容器中)运行时,您可以使用 Quay 中的容器映像:quay.io/containers/podman。在后台启动服务并运行您的构建。像这样的东西应该有效:

build:
  image: my-java-builder
  services:
    - name: quay.io/containers/podman:v4.2.1
      alias: docker
      command: ["podman", "system", "service", "--time=0", "tcp://0.0.0.0:2375"]
  variables:
    DOCKER_HOST: tcp://docker:2375
  script:
    - ./gradlew bootBuildImage
Run Code Online (Sandbox Code Playgroud)