首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用spring-boot: buildpack使用私有buildpack注册表的正确方法是什么?

用spring-boot: buildpack使用私有buildpack注册表的正确方法是什么?
EN

Stack Overflow用户
提问于 2022-06-23 13:00:24
回答 1查看 198关注 0票数 0

我创建了自己的paketo buildpack,并尝试将它与spring maven-plugin一起使用。

我写

代码语言:javascript
复制
<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/paketobuildpack/builder:base等,但是它当然不能从私有注册表下载buildpack。如前所述,这里必须为私有注册表添加凭据。

但当我加上

代码语言:javascript
复制
<configuration>
  <docker>
    <builderRegistry>
      <url>gitlab.company.com:5000</url>
      <username>myuser</username>
      <password>mypassword</password>
    </builderRegistry>
  </docker>
...
<configuration>

我突然发现这个错误

代码语言:javascript
复制
[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。

这是插件中的一个bug,还是不可能将多个私有和公共坞注册中心混合用于构建包?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-27 14:31:53

目前,如果您像您正在做的那样提供凭据,那么插件希望从相同的注册表(您在<url>块中指示的注册表)中提取构建器和构建包图像。

代码语言:javascript
复制
<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文件。同样,您需要自动化这一点,以便在更新buildpacks时生成新的构建器。
  3. 您可以使用pack cli代替。您可以运行pack build来生成映像。pack cli能够从多个注册中心提取。

作为将来的参考,您还可以跟踪本期,这是一个关于Spring插件的主题和潜在变化的讨论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72730602

复制
相关文章

相似问题

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