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

Posted

技术标签:

【中文标题】spring.config.additional-location 作为环境变量【英文标题】:spring.config.additional-location as environmental variable 【发布时间】:2019-07-13 08:36:44 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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"
...

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

更多信息请关注Spring Boot Externalized Configuration

【讨论】:

以上是关于spring.config.additional-location 作为环境变量的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别

spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别

Spring Boot 外部化配置简介