>source

Spring Boot 앱이 있으면 다음을 사용하여 빌드하려고했습니다. spring-boot-maven-pluginmvn 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 빌드 팩을 구성 하시겠습니까?


  • 답변 # 1

    문서에 따르면 :

    Paketo Buildpacks may download dependencies from the internet. For example, the Java Buildpack will download the BellSoft Liberica JRE from the Liberica github releases by default. If a dependency URI is inaccessible from the build environment, a binding can be used to map a new URI to a given dependency.

    현재로서는 spring-boot-maven-plugin (또는 Gradle 플러그인)을 사용하여 바인딩을 구성 할 수 없습니다. 따라서 우리는 CLI 팩으로 전환해야합니다.

    ===바인딩과 함께 Pack CLI를 사용하여 다른 JDK 다운로드 URI 구성===

    팩 문서는 바인딩 디렉토리의 일반적인 레이아웃 ( /platform/bindings 나중에 팩 빌드 컨테이너 내부에 생성됨) :

    /chooseYourBindingsName
    ├── key-name-of-our-buildpacks-binding-configuration
    └── type-name-of-our-buildpacks-binding-configuration
    
    

    1. 바인딩 디렉토리 생성

    이제 완전히 실행되는 예제를 만들어 봅시다! 바인딩 구성을 pack 필요한 CLI먼저 디렉토리 생성:

    mkdir bellsoft-jdk-config && cd bellsoft-jdk-config
    
    

    2. 바인딩 키를 포함하는 파일 유형 생성

    이제 다음과 같은 파일을 만들어야합니다. type bellsoft-liberica 바인딩 유형에 대한 바인딩 키를 포함하는이 디렉토리 내부 dependency-mapping :

    echo "dependency-mapping" >> type
    
    

    새 파일 type 문자열이 포함 된 디렉토리에 있어야합니다. dependency-mapping .

    3. buildpack.toml에서 JDK 버전을 선택합니다.

    bellsoft-liberica의 JDK 다운로드 uri를 변경하고 싶으므로우리가 사용할 JDK 버전을 결정해야합니다.bellsoft-liberica 빌드 팩의 buildpack.toml은 빌드 팩 내에서 사용 가능한 JRE/JDK 버전에 대한 개요를 제공합니다. 이 예에서는 최신 JDK 버전을 사용했습니다. 11 내부 구성 buildpack.toml 이렇게 :

    ...
    [[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 다운로드

    버전을 결정한 후내부에 제공된 위치에서 JDK를 다운로드해야합니다. uri 나중에 빌드 환경 내에서 액세스 할 수있는 위치에 필드(우리는 github.com에 대한 액세스 권한이 없기 때문에). JDK를 다운로드하여 사용할 수 있다고 가정 해 보겠습니다. http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz .

    5. JDK uri를 포함하는 sha256이라는 이름의 파일을 만듭니다.

    이제 우리는 또 다른에 따라 정확히 명명 된 파일 sha256 다이제스트 값[[metadata.dependencies]] buildpack.toml 내에서 선택한 JDK 버전 섹션. 이 파일에는 다운로드 한 JDK의 URI가 포함되어야합니다.

    echo "http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz" >> 786c48fa6429d6a3f0afb189a65f0a43772e42afbab836852b9a1fdfdb8fc502
    
    

    결국 우리의 디렉토리 bellsoft-jdk-config pack CLI 바인딩 디렉토리 문서를 준수해야하며 어떻게 든 다음과 같습니다.

    /bellsoft-jdk-config
    ├── 786c48fa6429d6a3f0afb189a65f0a43772e42afbab836852b9a1fdfdb8fc502
    └── type
    
    

    6. 바인딩을 위해 --volume 및 BP_JVM_VERSION을 사용하여 pack CLI를 실행합니다.

    마지막으로 우리는 pack CLI 명령. 팩 CLI가 시스템에 설치되어 있는지 확인하십시오. 또한 다음을 사용하여 정확한 JDK 버전 번호를 제공해야합니다. --env BP_JVM_VERSION=exactJDKversionNumberHere 다운로드 한 JDK 버전 및 buildpack.toml의 섹션과 일치하는 환경 변수 구성 :

    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
    
    

    이제 bellsoft-liberica 빌드 팩은 다음에서 JDK tar.gz를 다운로드합니다. http://your-accessible-uri-to/bellsoft-jdk11.0.9.1+1-linux-amd64.tar.gz :

    ...
    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 
    ...
    
    

  • 이전 javascript - 오류가 발생하면 processexit (1)을 사용해야합니까?
  • 다음 javascript - syntaxerror - jsonparse : json 데이터의 라인 1 열 1에 예기치 않은 문자가 있습니다 함수를 가져 오기 위해 두 번째 매개 변수를 추가하는 동안