簡體   English   中英

將私有 buildpack 注冊表與 spring-boot:build-image 一起使用的正確方法是什么?

[英]What is the correct way to use a private buildpack registry with spring-boot:build-image?

我創建了自己的 paketo buildpack,並嘗試將它與 spring-boot-maven-plugin 一起使用。

我寫

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <image>
      <buildpacks>
        <buildpack>paketo-buildpacks/java</buildpack>
        <buildpack>gitlab.company.com:5000/my-buildpack</buildpack>
      </buildpacks>
    </image>
  </configuration>
</plugin>

如果我使用這個配置 spring 正在下載 docker.io/paketobuildpacks/builder:base 等就好了,但它當然不能從私有注冊表下載 buildpack。 如此處所述,我必須為私有注冊表添加憑據。

但是當我添加

<configuration>
  <docker>
    <builderRegistry>
      <url>gitlab.company.com:5000</url>
      <username>myuser</username>
      <password>mypassword</password>
    </builderRegistry>
  </docker>
...
<configuration>

我突然收到這個錯誤

[INFO]  > Pulling builder image 'docker.io/paketobuildpacks/builder:base' 100%
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  33.957 s
[INFO] Finished at: 2022-06-23T14:39:27+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.6.8:build-image (default-cli) on project usermanagement: Execution default-cli of goal org.springframework.boot:spring-boot-maven-plugin:2.6.8:build-image failed:
Docker API call to 'localhost/v1.24/images/create?fromImage=docker.io%2Fpaketobuildpacks%2Fbuilder%3Abase' failed with status code 500 "Internal Server Error" 
and message "Head "https://registry-1.docker.io/v2/paketobuildpacks/builder/manifests/base": unauthorized: please use personal access token to login" -> [Help 1]

似乎 maven 插件也在嘗試將我的私有注冊表憑據應用到 docker.io。

這是插件中的錯誤,還是無法為 buildpack 混合多個私有和公共 docker 注冊表?

目前,如果您在執行過程中提供憑據,則插件希望從同一個注冊表中提取您的構建器和 buildpack 映像,即您在<url>塊中指定的那個。

<configuration>
  <docker>
    <builderRegistry>
      <url>gitlab.company.com:5000</url>
      <username>myuser</username>
      <password>mypassword</password>
    </builderRegistry>
  </docker>
...
<configuration>

它失敗的原因是你有一個混合體,你在 Paketo 公共注冊表中有構建器,在私有注冊表中有你的自定義 buildpack。

您可以通過以下幾種方式解決此問題:

  1. 您可以將公共構建器重新定位到您的私有注冊表中。 然后從該注冊表中提取。 如果您這樣做,您將需要某種自動化作業,當新構建器通過 Paketo 公共注冊表發布時獲取並重新定位構建器,這樣您就可以獲取更新。

  2. 您可以創建自己的構建器並將其發布到您的私有注冊表。 這需要做更多的工作,但最終需要自定義builder.toml並使用該配置運行pack builder create 好處是您可以簡化構建器並刪除不使用的東西,從而減小構建器的大小並使構建速度更快。 請參閱此處的說明Paketo 基礎 builder.toml 文件 同樣,您希望自動執行此操作,以便在更新 buildpack 時生成新的構建器。

  3. 您可以改用pack cli。 您可以運行pack build來生成圖像。 pack cli 能夠從多個注冊表中提取。

為了將來參考,您還可以跟蹤這個問題,這是關於 Spring Boot 插件的主題和潛在更改的討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM