You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何指定自定义镜像仓库用于Quarkus原生镜像构建?

问题根因

Podman的registries.search配置生效范围仅限不带仓库域名前缀的短镜像名(例如仅指定ubi-quarkus-native-image:22.0-java11时,才会按search列表顺序遍历仓库查找镜像)。Quarkus容器化构建原生镜像时,默认拉取的是带完整域名的镜像quay.io/quarkus/ubi-quarkus-native-image:22.0-java11,Podman遇到带明确域名前缀的镜像会直接请求对应域名的公网仓库,不会触发search列表匹配逻辑,因此预先配置的内部Nexus仓库地址不会被调用。

解决方案

可根据实际场景选择以下任意一种方案:

方案1:Quarkus侧指定内部构建镜像

该方案仅对当前项目生效,不需要修改全局容器配置,是最推荐的轻量方案:

  • 提前将对应版本的Quarkus原生构建镜像同步到内部Nexus仓库,记录镜像的完整访问路径,例如our.nexus/quarkus/ubi-quarkus-native-image:22.0-java11
  • 构建时通过参数指定构建镜像地址,完整命令如下:
mvn clean package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=our.nexus/quarkus/ubi-quarkus-native-image:22.0-java11
  • 如果需要对当前项目永久生效,可将配置写入项目src/main/resources/application.properties文件:
quarkus.native.builder-image=our.nexus/quarkus/ubi-quarkus-native-image:22.0-java11

方案2:Podman侧配置镜像拉取代理(全局生效)

如果需要所有Podman拉取quay.io镜像的请求都走内部Nexus,不需要修改Quarkus项目配置,可通过配置镜像转发规则实现:

  • 提前在Nexus中创建quay.io的代理仓库,记录代理仓库的访问路径
  • 编辑/etc/containers/registries.conf文件,追加以下配置:
[[registry]]
prefix = "quay.io"
location = "quay.io"
[[registry.mirror]]
location = "our.nexus/quay-proxy"  # 替换为Nexus代理仓库实际路径
  • 保存配置后直接执行原有构建命令即可,Podman拉取quay.io镜像时会优先从配置的内部代理地址拉取。

注意:配置完成后可先手动执行podman pull quay.io/quarkus/ubi-quarkus-native-image:22.0-java11验证镜像是否能从内部仓库正常拉取,确认正常后再执行Quarkus构建。

内容的提问来源于stack exchange,提问作者eerriicc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:57:27