Quarkus 3.18中Jib配置build:false仍构建镜像的问题咨询
Quarkus 3.18 Jib 容器镜像配置行为解析
核心逻辑说明
Quarkus容器镜像插件搭配Jib时,quarkus.container-image.push=true会强制触发镜像构建,不管quarkus.container-image.build设成什么。这是因为Jib的推送操作必须基于已构建的镜像——哪怕这个镜像只是临时生成用于推送,不保存到本地Docker守护进程。
你的配置场景逐一解析
场景1:build=false, push=true
quarkus.container-image.builder = jib quarkus.container-image.build = false quarkus.container-image.push = true
你以为不会构建,但Jib还是跑了构建流程——这是因为push=true的优先级更高。此时Jib会完成镜像构建,但不会把镜像存到本地Docker里,而是直接推送到远程仓库。日志里的Starting (local) container image build for jar using jib指的是Jib自身的本地构建流程,不是用Docker daemon构建后保存。
场景2:build=true, push=true
quarkus.container-image.builder = jib quarkus.container-image.build = true quarkus.container-image.push = true
这个配置下Jib既构建镜像又推送,属于正常行为。构建好的镜像会同时保存到本地Docker守护进程,并且推送到远程仓库。
场景3:build=true, push=false
quarkus.container-image.builder = jib quarkus.container-image.build = true quarkus.container-image.push = false
此时Jib只构建镜像并保存到本地Docker守护进程,不执行推送,和日志里显示的Using docker to run the native image builder(如果是构建native镜像)行为一致,符合配置预期。
关键属性的实际作用
quarkus.container-image.build:控制是否把构建好的镜像保存到本地Docker守护进程。设为false时,Jib构建的镜像不会留在本地,但如果push=true,还是会完成构建并直接推送。quarkus.container-image.push:控制是否把镜像推送到远程仓库。设为true时,会自动触发构建流程——毕竟推送得有镜像可推,所以不管build怎么设,都会先跑构建。quarkus.container-image.builder = jib:指定用Jib做镜像构建工具,Jib不需要依赖本地Docker就能完成构建和推送,这和直接用Docker构建的逻辑有区别。
内容的提问来源于stack exchange,提问作者Cristian De Vecchi
相关产品推荐
相关产品推荐

