spring.config.additional-location 作为环境变量

Gio*_*nJh 8 java spring docker spring-boot

我有一个用于 spring boot 2 应用程序的 Docker 映像,在该映像中,我使用 spring.config.additional-location 传递存储在容器本身文件中的一些属性。

现在我想在另一个容器中使用这个容器作为另一个容器中的一个层,或者在 docker-compose 文件中使用它,我可能需要覆盖 spring.config.additional-location。

我试图在 ENV 变量中覆盖它:但 SPRING_CONFIG_ADDITIONAL-LOCATION没有成功。

实现这一目标的正确方法是什么。

小智 9

spring.config.additional-location 的值必须是目录路径而不是文件路径。我不确定这是错误还是功能,因为 spring.config.location 允许两者。

例如在 docker-compose.yml 中,您可以将 spring.config.additional-location 设置为:

version: '3'
    services:
      myapp:
        build: .
        environment:      
          - "SPRING_CONFIG_ADDITIONAL-LOCATION=file:/opt/myapp/config/"
          - "SPRING_PROFILES_ACTIVE=production"
...
Run Code Online (Sandbox Code Playgroud)

然后 Spring Boot 将查找 /opt/myapp/config/application-production.properties 文件以从中加载属性。

更多关于Spring Boot 外部化配置的信息