[英]How to publish a docker image when you use 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。
您可以通過以下幾種方式解決此問題:
您可以將公共構建器重新定位到您的私有注冊表中。 然后從該注冊表中提取。 如果您這樣做,您將需要某種自動化作業,當新構建器通過 Paketo 公共注冊表發布時獲取並重新定位構建器,這樣您就可以獲取更新。
您可以創建自己的構建器並將其發布到您的私有注冊表。 這需要做更多的工作,但最終需要自定義builder.toml
並使用該配置運行pack builder create
。 好處是您可以簡化構建器並刪除不使用的東西,從而減小構建器的大小並使構建速度更快。 請參閱此處的說明和Paketo 基礎 builder.toml 文件。 同樣,您希望自動執行此操作,以便在更新 buildpack 時生成新的構建器。
您可以改用pack
cli。 您可以運行pack build
來生成圖像。 pack
cli 能夠從多個注冊表中提取。
為了將來參考,您還可以跟蹤這個問題,這是關於 Spring Boot 插件的主題和潛在更改的討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.