gpt4 book ai didi

spring-boot - 带有私有(private)仓库的 Spring Boot Gradle bootBuildImage 任务

转载 作者:行者123 更新时间:2023-12-04 12:35:41 24 4
gpt4 key购买 nike

我正在尝试设置一个 Spring Boot/Gradle 项目以使用 bootBuildImage 构建我的 Docker 镜像,但遇到了障碍。我们的构建服务器上的外部网络访问权限有限;我们使用私有(private) nexus 存储库。

当我尝试运行 bootBuildImage 任务时,它试图从 repo.spring.io 请求一个文件:

[creator]     unable to invoke layer creator
[creator] unable to contribute spring-cloud-bindings layer
[creator] unable to get dependency spring-cloud-bindings
[creator] unable to download https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.7.0/spring-cloud-bindings-1.7.0.jar
[creator] unable to request https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.7.0/spring-cloud-bindings-1.7.0.jar

我已将 repo.spring.io 添加为我们的 nexus 服务器上的存储库,但我不清楚如何让 Spring Boot Gradle 插件使用它。我尝试将它添加到我的 repositories block 中,但它似乎没有效果。

repositories {
// Other repositories...
//

maven {
url "<my nexus server>/repository/spring-io-releases/"
}

我错过了什么?

最佳答案

我有一个类似的问题,我需要 configure the download uri of the bellsoft-liberica JDK used inside the Spring Boot build image goal/task不使用 github.com - 而是我自己的私有(private)服务器。用 buildpack environment variable 做不到一个人,但你可以use bindings for that!

请注意 Spring Boot Gradle PluginSpring Boot Maven Plugin它需要 Spring Boot 2.5+(2.5 中添加了一个 bindings 选项)。如果您使用的是较旧的 Spring Boot 版本,则需要升级或切换到 pack CLI .

可以配置绑定(bind)either through volumes or Kubernetes secrets .我创建了 a fully comprehensible guide on how to use bindings in order to change a uri used inside a buildpack - 但我将概述切换 spring-cloud-bindings-x.y.z.jar uri 的关键步骤:

<强>1。创建绑定(bind)目录

为了将绑定(bind)配置交给pack CLI 我们需要先创建一个目录:

mkdir spring-cloud-config && cd spring-cloud-config

<强>2。创建文件类型,包含绑定(bind) key

现在我们需要创建一个名为 type 的文件在此目录中包含 the spring-boot buildpack binding type dependency-mapping 的绑定(bind) key :

echo "dependency-mapping" >> type

<强>3。创建名为 sha256 的文件,其中包含 spring-cloud-bindings-x.y.z.jar uri

现在我们应该创建另一个完全根据 sha256 命名的文件[[metadata.dependencies]] 的摘要值spring-cloud-bindings-1.7.0.jarbuildpack.toml里面:

[[metadata.dependencies]]
id = "spring-cloud-bindings"
name = "Spring Cloud Bindings"
version = "1.7.0"
uri = "https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.7.0/spring-cloud-bindings-1.7.0.jar"
sha256 = "e3c18bf1a3c2e52743f9ff2fa46af59e5eee0a7f0683ff562eb35aa866e4a9e9"
stacks = [ "io.buildpacks.stacks.bionic", "org.cloudfoundry.stacks.cflinuxfs3" ]

此文件必须包含您的内部关系的 uri,包括。 spring-cloud-bindings.jar:

echo "http://<my nexus server>/repository/spring-io-releases/org/springframework/cloud/spring-cloud-bindings/1.7.0/spring-cloud-bindings-1.7.0.jar" >> e3c18bf1a3c2e52743f9ff2fa46af59e5eee0a7f0683ff562eb35aa866e4a9e9

<强>4。使用 --volume 执行 pack CLI 以使用绑定(bind)

最后我们可以发布我们的 pack CLI 命令。确保 pack CLI is installed on your system :

pack build your-application-name-here \
--path . \
--volume $(pwd)/spring-cloud-config:/platform/bindings/spring-cloud-config \
--builder paketobuildpacks/builder:base

或者,您可以使用 bindings Spring Boot 2.5+ Maven 或 Gradle 插件的选项,请参阅上面的链接。

现在 spring-boot buildpack 将下载 spring-cloud-bindings-1.7.0.jar来自 http://<my nexus server>/repository/spring-io-releases/org/springframework/cloud/spring-cloud-bindings/1.7.0/spring-cloud-bindings-1.7.0.jar而不是 https://repo.spring.io/release .

关于spring-boot - 带有私有(private)仓库的 Spring Boot Gradle bootBuildImage 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65118519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com