Spring boot Spring boot 2.4.2 external application.yml未在Docker容器中读取
Spring Boot:2.4.2-云版本:2020.0.0-Java 15-来自nginx的Docker:1.19.6-alpine 我的外部Spring boot Spring boot 2.4.2 external application.yml未在Docker容器中读取,spring-boot,Spring Boot,Spring Boot:2.4.2-云版本:2020.0.0-Java 15-来自nginx的Docker:1.19.6-alpine 我的外部应用程序.yml位于Docker容器中的spring启动jar旁边。这是为了覆盖某些属性 springboot.jar application.yml 我有一个bash脚本作为启动jar的入口点 exec env LOG_FILE=/logs/$APP_NAME/$APP_NAME.LOG java$opts-jar/opt/APP/APP.jar&
应用程序.yml
位于Docker容器中的spring启动jar旁边。这是为了覆盖某些属性
springboot.jar
application.yml
我有一个bash脚本作为启动jar的入口点
exec env LOG_FILE=/logs/$APP_NAME/$APP_NAME.LOG java$opts-jar/opt/APP/APP.jar&
问题是当Docker启动这个容器时,springboot.jar
没有读取外部应用程序.yml
请注意,应用程序启动时没有任何问题。只是没有读取我想要覆盖的属性
一个非常简单的例子是,在应用程序.yml
中,我故意设置
logging:
level:
root: DEBUG
现在,我的期望是看到所有调试日志。应用程序没有阅读它
但是,如果我登录到容器并杀死java进程,然后自己用上面提到的相同脚本重新启动它,它会在应用程序.yml
中拾取值
唯一有效的解决方案是使用
-Dspring.config.import=file:/opt/app/application.yml
这是与2.4.2相关的问题还是我在这里遗漏了什么?由于Spring Boot查找应用程序属性的顺序是:
java$opts-jar/opt/app/app.jar
(您使用绝对jar路径调用它),请确保您在这个目录中(cd/opt/app
)
示例
假设您具有以下目录/文件结构:
.
├── foo
│ └── bin
│ ├── app.jar
│ | └── application.yml
│ └── application.yml
同样给出:在app.jar
的应用程序中.yml
spring.jpa.show sql
设置为false
,在bin
目录下的application.yml
中设置为true
在bin
文件夹内执行:
在这种情况下,应用程序运行时将spring.jpa.show sql
设置为true
,因为找到了当前目录的application.yml
,并且覆盖了app.jar
的application.yml
中定义的属性
在另一个目录中执行
在这种情况下,应用程序运行时将spring.jpa.show sql
设置为false
,因为在当前目录中(bin上的目录)没有application.yml
,因此使用app.jar
的application.yml
。由于Spring Boot查找应用程序属性的顺序:
java$opts-jar/opt/app/app.jar
(您使用绝对jar路径调用它),请确保您在这个目录中(cd/opt/app
)
示例
假设您具有以下目录/文件结构:
.
├── foo
│ └── bin
│ ├── app.jar
│ | └── application.yml
│ └── application.yml
同样给出:在app.jar
的应用程序中.yml
spring.jpa.show sql
设置为false
,在bin
目录下的application.yml
中设置为true
在bin
文件夹内执行:
在这种情况下,应用程序运行时将spring.jpa.show sql
设置为true
,因为找到了当前目录的application.yml
,并且覆盖了app.jar
的application.yml
中定义的属性
在另一个目录中执行
在这种情况下,应用程序运行时将spring.jpa.show sql
设置为false
,因为在当前目录(bin上的目录)中没有application.yml
,因此使用app.jar
的application.yml
cd bin
cd ..
java -jar bin/app.jar