我们使用私有 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 构建工具插件的
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 下载依赖项.
根据服务器的需要进行调整。还有更多选项可用,请参阅上面的链接。