有一个SpringBoot应用程序,我试着用 spring-boot-maven-plugin
目标 mvn spring-boot:build-image
. 但是这个版本无法下载 bellsoft-jre11.0.9.1+1-linux-amd64.tar.gz
从 github.com
,因为我无法从生成管道访问它:
...
Paketo BellSoft Liberica Buildpack 5.2.1
https://github.com/paketo-buildpacks/bellsoft-liberica
Build Configuration:
$BP_JVM_VERSION 11.0.9 the Java version
Launch Configuration:
$BPL_JVM_HEAD_ROOM 0 the headroom in memory calculation
$BPL_JVM_LOADED_CLASS_COUNT 35% of classes the number of loaded classes in memory calculation
$BPL_JVM_THREAD_COUNT 250 the number of threads in memory calculation
$JAVA_TOOL_OPTIONS the JVM launch flags
BellSoft Liberica JDK 11.0.9: Contributing to layer
Downloading from https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz
unable to invoke layer creator
unable to get dependency jdk
unable to download https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz
unable to request https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz
ERROR: failed to build: exit status 1
有没有办法下载 bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz
到我的构建管道可访问的位置,并将bellsoft liberica buildpack配置为使用它?
2条答案
按热度按时间w1jd8yoj1#
根据文件:
paketo BuildPack可以从internet下载依赖项。例如,默认情况下,javabuildpack将从libericagithub版本下载bellsoft libericajre。如果生成环境无法访问依赖项uri,则可以使用绑定将新uriMap到给定的依赖项。
目前,使用springbootmaven插件(或gradle插件)配置绑定是不可能的。因此,我们需要切换到packcli。
===使用带有绑定的pack cli来配置不同的jdk下载uri===
pack文档告诉我们绑定目录的总体布局(
/platform/bindings
稍后在包生成容器中创建):1.创建绑定目录
因此,让我们尝试创建一个完全运行的示例!为了将绑定配置移交给
pack
cli我们需要先创建一个目录:2.创建包含绑定键的文件类型
现在我们需要创建一个名为
type
此目录中包含bellsoft liberica绑定类型的绑定键dependency-mapping
:新文件
type
应该存在于包含字符串的目录中dependency-mapping
.3.从buildpack.toml中选择jdk版本
当我们想要更改bellsoft liberica的jdk下载uri时,我们需要决定我们最想使用哪个jdk版本。bellsoft liberica buildpack的buildpack.toml概述了buildpack中提供的jre/jdk版本。对于这个例子,我使用了最新的jdk版本
11
配置在buildpack.toml
这样地:4.单击红色按钮
决定了版本之后,我们需要从
uri
字段指定我们稍后在构建环境中可以访问的位置(因为我们不能访问github.com)。假设我们已经下载了jdk,并且可以在http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz
.5.创建名为sha256的文件,其中包含jdkuri
现在我们应该根据
sha256
数据的摘要值[[metadata.dependencies]]
我们在buildpack.toml中选择的jdk版本的一部分。此文件必须包含下载的jdk的uri:最后是我们的目录
bellsoft-jdk-config
应该符合pack cli bindings directory docs,看起来像这样:6.使用--volume for binding&bp\u jvm\u version执行pack cli
最后我们可以发布
pack
cli命令。确保系统上安装了pack cli。还要确保使用--env BP_JVM_VERSION=exactJDKversionNumberHere
环境变量配置,它与下载的jdk版本和buildpack.toml中的部分相匹配:现在bellsoft liberica buildpack将从下载jdk tar.gz
http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz
:bksxznpy2#
@jonashackt我有一个解决这个问题的方法,它可以工作
我创建绑定
然后创建一个dockerfile来复制这些绑定,并基于上一个绑定构建一个新平台
然后我配置了spring插件来使用这个平台
当在本地计算机(windows)上构建平台并推送到远程或本地repo时,这种解决方法是有效的。当我在ci上构建这个并从ci推送到远程repo时,它不起作用。。
你试过这样的解决办法吗?