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

时间:2019-02-19 18:48:49

标签: java spring spring-boot docker

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

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

我试图在ENV变量中覆盖它: public class DataSourceComponent extends HorizontalLayout { private ComboBox dataSourceTable; private CheckBox mandatory; private List<DataSourceFieldComponent> fields; ... public void setDataSource(DataSourceObject ds) { ... } 没有成功。

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

1 个答案:

答案 0 :(得分: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

中对此有更多了解