gpt4 book ai didi

java - docker环境下spring boot外部配置: application. yml不存在

转载 作者:行者123 更新时间:2023-12-01 18:36:17 30 4
gpt4 key购买 nike

在开始解释我的问题之前,值得一提的是,虽然我正在尝试如何将 Maven Jib 插件与 Spring Boot 和 Kubernetes 结合使用,但即使我尝试使用普通的 docker,问题也是一样的。

我使用 Kubernetes configMap 创建 application.yml 文件并将其作为外部文件安装到 Pod (/config/application.yml)。我面临的问题是我的应用程序无法找到 application.yml 文件并抛出典型的异常:

ERROR [main] org.springframework.boot.SpringApplication: Application run failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.example.Application]; nested exception is java.io.FileNotFoundException: class path resource [application.yml] cannot be opened because it does not exist

我通过使用不同的参数尝试了 Jib 的不同方法,如下所示。

  <container>
<extraClasspath>/config/*</extraClasspath>
<args>
<arg>--spring.config.location=file:/config/application.yml</arg>
</args>
<jvmFlags>
<jvmFlag>-Dspring.config.location=classpath:/,classpath:/config/,file:./,file:./config/,file:/config/</jvmFlag>
</jvmFlags>
</container>

他们都不适合我。我还尝试使用 SPRING_CONFIG_NAME 环境变量并将其设置为 pod 的 file:/config/application.yml,但仍然存在同样的问题。

我可以验证配置文件是否存在于指定位置,并且不存在权限问题(据我所知)。

有趣的是,当我在默认类路径 (src/main/resources) 中创建一个空的 application.yml 文件时,它会通过第一次验证并加载应用程序成功(使用 /config/application 中的实际值),因此无论问题是什么,在将应用程序文件传递给相应的类之前,它都会受到 Spring Boot 初始验证的影响。

最佳答案

事实证明,我唯一需要的元素如下:

<container>
<extraClasspath>/config</extraClasspath> <!-- No need to have * at the end -->
</container>

关于java - docker环境下spring boot外部配置: application. yml不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60034642/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com