首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java/Spring的云本地构建包/Paketo:如何配置不同的JDK下载uri (例如,无法访问github.com)

使用Java/Spring的云本地构建包/Paketo:如何配置不同的JDK下载uri (例如,无法访问github.com)
EN

Stack Overflow用户
提问于 2020-12-09 07:18:54
回答 5查看 4.7K关注 0票数 3

有了Spring应用程序,我尝试使用spring-boot-maven-plugin goal mvn spring-boot:build-image构建它。但是,构建从github.com下载github.com失败了,因为我无法从构建管道访问它:

代码语言:javascript
复制
...
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构建包来代替它呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-12-09 07:20:30

根据医生的说法

Paketo可以从internet下载依赖项。例如,默认情况下将从Liberica发行版下载BellSoft Liberica。如果依赖URI无法从构建环境访问,则可以使用绑定将新URI映射到给定的依赖项。

使用Spring maven-plugin(或Gradle插件)配置绑定需要Spring 2.5+。如果您使用的是旧版本,则需要升级或切换到包CLI

=== 使用带有绑定的pack CLI配置不同的JDK下载uri ===。

这群医生告诉我们绑定目录的一般布局(稍后在pack容器中创建/platform/bindings):

代码语言:javascript
复制
/chooseYourBindingsName
├── key-name-of-our-buildpacks-binding-configuration
└── type-name-of-our-buildpacks-binding-configuration

1.创建绑定目录

因此,让我们尝试创建一个完整运行的示例!为了将绑定配置交给pack CLI,我们需要首先创建一个目录

代码语言:javascript
复制
mkdir bellsoft-jdk-config && cd bellsoft-jdk-config

2.创建文件类型,包含绑定键

现在,我们需要在这个目录中创建一个名为type的文件,其中包含dependency-mapping的绑定键。

代码语言:javascript
复制
echo "dependency-mapping" >> type

一个新的文件type应该出现在包含字符串dependency-mapping的目录中。

3.从buildpack.toml中选择JDK版本

当我们想要更改JDK的贝尔软包下载uri时,需要决定我们确切地想使用哪个JDK版本,的-liberica的buildpack.toml给出了在构建包中提供哪些JRE/JDK版本的概述。在本例中,我使用了最新的JDK版本11,它在buildpack.toml中配置如下:

代码语言:javascript
复制
...

[[metadata.dependencies]]
id      = "jdk"
name    = "BellSoft Liberica JDK"
version = "11.0.9"
uri     = "https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz"
sha256  = "786c48fa6429d6a3f0afb189a65f0a43772e42afbab836852b9a1fdfdb8fc502"
stacks  = [ "io.buildpacks.stacks.bionic", "org.cloudfoundry.stacks.cflinuxfs3" ]
...

4.下载JDK

在决定了版本之后,uri需要将JDK从字段中提供的位置下载到我们的构建环境中稍后可以访问的位置(因为我们不能访问github.com)。让我们假设,我们已经下载了JDK,并且可以在http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz上使用。

5.创建名为sha256的文件,其中包含JDK

现在,我们应该创建另一个文件,它完全按照我们在buildpack.toml中选择的JDK版本的[[metadata.dependencies]]部分的摘要值命名。此文件必须包含下载的JDK的uri:

代码语言:javascript
复制
echo "http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz" >> 786c48fa6429d6a3f0afb189a65f0a43772e42afbab836852b9a1fdfdb8fc502

最后,我们的目录bellsoft-jdk-config应该遵从pack CLI绑定目录文档,看起来如下所示:

代码语言:javascript
复制
/bellsoft-jdk-config
├── 786c48fa6429d6a3f0afb189a65f0a43772e42afbab836852b9a1fdfdb8fc502
└── type

6.为绑定和BP_JVM_VERSION使用--卷执行pack

最后,我们可以发出pack CLI命令。确保包CLI已安装在您的系统上。。还请确保使用--env BP_JVM_VERSION=exactJDKversionNumberHere 环境变量配置提供确切的JDK版本号,该版本与下载的JDK版本和buildpack.toml中的部分相匹配。

代码语言:javascript
复制
pack build your-application-name-here \
    --path . \
    --volume $(pwd)/bellsoft-jdk-config:/platform/bindings/bellsoft-jdk-config \
    --env BP_JVM_VERSION=11.0.9 \
    --builder paketobuildpacks/builder:base

现在,贝尔软包将从http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz下载JDK tar.gz。

代码语言:javascript
复制
...
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 http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz 
...
票数 12
EN

Stack Overflow用户

发布于 2020-12-17 17:07:50

我创建绑定:

代码语言:javascript
复制
/bindings/bellsoft-jdk-config
├── 786c48fa6429d6a3f0afb189a65f0a43772e42afbab836852b9a1fdfdb8fc502
├── a3092627b082cb3cdbbe4b255d35687126aa604e6b613dcda33be9f7e1277162
├── be27df8838a6d069a2212de5f46da4e39f33f087f2e77c8a725d0f7ec8b5273e
├── d9ff2d84528a2154ff669b85e6dbdee7f244194dcc64e0a8a1bedc470b3bcf56
└── type

然后创建一个Dockerfile,该文件复制这些绑定,并在前一个平台的基础上构建一个新平台:

代码语言:javascript
复制
FROM paketobuildpacks/builder:0.0.464-base-platform-api-0.3
 
COPY bindings /platform/bindings
 
CMD ["/bin/bash"]
代码语言:javascript
复制
docker build -t your-repo-url/java-builder-test:1 .
docker push your-repo-url/java-builder-test:1

然后,我将spring插件配置为使用这个平台:

代码语言:javascript
复制
<configuration>
    <imageBuilder>your-repo-url/java-builder-test:1</imageBuilder>
    <layers>
        <enabled>true</enabled>
    </layers>
    <image>
        <name>your-repo-url/${project.artifactId}:${project.version}</name>
    </image>
</configuration>

此解决方案有效,但您必须使用正确的目录权限。

票数 2
EN

Stack Overflow用户

发布于 2021-11-10 04:34:09

我将pom.xml中的Java版本更改为17:

代码语言:javascript
复制
<properties>
    <java.version>17</java.version>
    <spring-cloud.version>2020.0.2</spring-cloud.version>
</properties>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65212231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档