使用Spring Native和自定义Docker注册表



按照他们的指导,我们正在尝试使用Spring Native。此外,我们希望使用Gradle和Buildpacks。我们已经相应地调整了配置(build.gradle),并运行./gradlew bootBuildImage来构建Spring Native映像。

出现问题是因为我们被迫使用我们公司的自定义Docker映像注册表。因此,我们不能直接拉,例如docker.io/paketobuildpacks/run:tiny-cnb,而必须使用docker-io.docker-proxy.ourcompany.com/paketobuildpacks/run:tiny-cnb之类的东西。

我们已经提取并重新标记了该过程中使用的构建器映像paketobuildpacks/builder。但是由于其余的都在这个构建容器内发生,我们不能再使用这个解决方案了。所以我们得到:

* What went wrong:
Execution failed for task ':bootBuildImage'.
> Docker API call to 'localhost/v1.24/images/create?fromImage=docker.io%2Fpaketobuildpacks%2Frun%3Atiny-cnb' failed with status code 500 "Internal Server Error" and message "Get "https://registry-1.docker.io/v2/": context deadline exceeded"

(可能因为试图连接*.docker.io会超时)

到目前为止,我们还没有找到配置进程使用的Docker注册表的可能性。我们也可以找一棵更大的"树"。在以后的过程中需要进一步的依赖项,在下面的文件中描述(其中引用gcr.io而不是docker.io)。

我们不允许直接访问公共注册表,因此没有进一步的想法。那么,您能想到使用您自己的代理注册中心来实现构建Spring Native映像的目标吗?

提前感谢!

使用pack命令行,您可以运行pack config registry-mirrors add <registry> [-m <mirror...] [flags],例如:pack config registry-mirrors add index.docker.io --mirror 10.0.0.1,其中10.0.0.1是您的私有注册表。

https://buildpacks.io/docs/tools/pack/cli/pack_config_registry-mirrors_add/

在Spring Boot的Gradle支持中,您有docker.builderRegistrydocker.publishRegistry设置,但这些设置主要用于提供用于从注册表获取或发布映像的凭据。他们不完全做我们这里需要的。

https://docs.spring.io/spring-boot/docs/2.6.7/gradle-plugin/reference/htmlsingle/build-image.docker-registry

对镜像功能的支持,如packcli,目前不是一个选项。已经打开了一个问题来跟踪对它的支持,所以希望它能在未来的版本中可用。

同时,您可以使用packcli和上面的镜像选项来构建映像。

测试/验证的快速方法:

  1. 运行docker run -d -p 5000:5000 --restart=always --name=registry -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io registry:2。这将运行镜像Docker Hub的本地注册表。

  2. 执行pack config registry-mirrors add '*' --mirror localhost:5000命令,告诉pack命令行使用注册表镜像。

  3. 运行pack build对你的应用程序,你应该看到输出如下:

Using mirror localhost:5000/paketobuildpacks/builder:base for index.docker.io/paketobuildpacks/builder:base
base: Pulling from paketobuildpacks/builder
83525de54a98: Pulling fs layer
807f554cf05f: Pulling fs layer
...

如果你看到这一行,你就知道它工作正常。

你也应该在你的pack配置中看到:

> cat ~/.pack/config.toml
[registry-mirrors]
"*" = "localhost:5000"

这意味着您已经正确设置了注册表镜像。

最新更新