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

Quarkus从2.16升级到3.10.0后quarkus.config.locations配置失效问题

Quarkus 3.10升级后配置文件加载问题解决

问题原因

  1. 构建时配置解析逻辑变更:Quarkus 3.x将quarkus.config.locations标记为构建阶段生效的配置项。你在application.properties中用%prod.quarkus.config.locations指定的生产环境路径,会在Maven构建阶段被激活并尝试加载,但此时K8s卷挂载的路径还不存在,因此抛出SRCFG00035加载失败错误。而Quarkus 2.16中该配置是运行时才解析,不会触发构建阶段的文件检查。

  2. Dockerfile ENTRYPOINT格式错误:使用JSON数组格式的ENTRYPOINT时,你错误地把整个命令作为单个字符串参数,容器运行时会将这个完整字符串当作可执行文件查找,自然找不到对应路径,因此报"no such file or directory"。

解决方案

1. 修复Dockerfile的ENTRYPOINT写法

JSON数组格式要求每个命令/参数拆分为独立数组元素,正确示例:

ENTRYPOINT ["java", "-Dquarkus.config.locations=file:/opt/<OUR_DIR>/quarkus_install/config/application-config.properties,file:/opt/<OUR_DIR>/quarkus_install/config/application-sensitive-config.properties", "-jar", "/app/your-application.jar"]

也可以用更灵活的组合(ENTRYPOINT固定基础命令,CMD传递参数):

ENTRYPOINT ["java", "-jar", "/app/your-application.jar"]
CMD ["-Dquarkus.config.locations=file:/opt/<OUR_DIR>/quarkus_install/config/application-config.properties,file:/opt/<OUR_DIR>/quarkus_install/config/application-sensitive-config.properties"]

2. 改用Quarkus推荐的运行时配置导入方式

Quarkus 3.x推荐使用quarkus.config.import替代quarkus.config.locations,同样支持运行时通过系统参数传递:

ENTRYPOINT ["java", "-Dquarkus.config.import=file:/opt/<OUR_DIR>/quarkus_install/config/application-config.properties,file:/opt/<OUR_DIR>/quarkus_install/config/application-sensitive-config.properties", "-jar", "/app/your-application.jar"]

注:file://前缀可简化为file:,功能完全一致。

3. 适配Helm部署的替代方案

如果需要通过Helm生成配置文件,还有更简洁的实现方式:

  • 利用Quarkus默认配置路径:将Helm生成的配置文件挂载到/config目录(比如/config/application-config.properties),Quarkus会自动加载该目录下的所有配置文件,无需手动指定locations或import。
  • 环境变量传递配置:在Helm的values.yaml中定义QUARKUS_前缀的环境变量,Quarkus会自动映射为对应配置项(比如QUARKUS_DATASOURCE_JDBC_URL对应quarkus.datasource.jdbc.url),无需挂载配置文件,更适配K8s环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:35:05