使用maven构建Spring Boot Docker镜像:指定JRE镜像

问题描述 投票:0回答:1

我们使用私有 Nexus 存储库来存储 docker 镜像。 在那里,我们托管我们选择的 JVM,我们在 Dockerfile 中指定它:

FROM docker-nexus.mycompany.tools/eclipse-temurin:17-jdk-alpine

我尝试改变我们的方法来使用maven spring-boot:build-image目标而不是编写dockerfiles。

我满足了所有要求,除了一个:说服 spring-boot 插件/paketo 从不同位置下载 JVM Docker 映像(FROM 指令)。

这里最重要的部分是从我们的私有注册表(docker-nexus.mycompany.tools)下载。具体JVM版本可协商。

我尝试配置buildRegistry和publishRegistry(不确定它们是否与图像下载相关)以指向我们的注册表。

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <docker>
            <builderRegistry>
                <url>docker-nexus.mycompany.tools</url>
                ... username pass ...
            </builderRegistry>
            <publishRegistry>
                <url>docker-nexus.mycompany.tools</url>
                ... username pass ...
            </publishRegistry>
        </docker>

但图像仍在尝试通过 https://github.com 下载(这会导致我们的防火墙阻止该进程):

[INFO]     [creator]       BellSoft Liberica JRE 17.0.12: Contributing to layer
[INFO]     [creator]         Downloading from https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jre17.0.12+10-linux-amd64.tar.gz

我看到 here 人们可以通过选择不同的“buildpack”来配置不同的 JVM,但是当然,此列表中的任何 buildpack 都不会查看我们的私有关系。

是否可以从我们的私有注册表中获取 JVM 映像,或者我们必须恢复使用 Dockerfile?

spring-boot docker maven paketo
1个回答
0
投票

有两种方法可以实现此目的。

  1. 使用依赖镜像。这允许您将构建包指向其下载的所有依赖项的不同位置。

  2. 使用依赖关系映射。这允许您更改要从不同位置下载的各个依赖项。

您使用哪个仅取决于您的需求,但听起来您可能想要第一个选项,将所有内容都指向您的依赖服务器。

为此,您需要在 Spring Boot 构建工具插件的

BP_DEPENDENCY_MIRROR
<env>
块中设置
<configuration>

<env>
  <BP_DEPENDENCY_MIRROR>https://mirror.example.org</BP_DEPENDENCY_MIRROR>
  ...
</env>

假设我们与原始 URI https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jre11.0.8+10-linux-amd64 存在依赖关系。 tar.gz。 此设置将从 https://mirror.example.org/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jre11.0.8+10-linux-amd64.tar.gz 下载依赖项.

根据服务器的需要进行调整。还有更多选项可用,请参阅上面的链接。

© www.soinside.com 2019 - 2024. All rights reserved.