使用OS环境变量覆盖活动配置文件?

时间:2018-01-23 03:58:07

标签: spring-boot

我有一个dockerfile,可以在命令行上创建一个用-Dspring_profiles_active=test启动Spring Boot应用程序的映像。现在我希望能够根据环境覆盖配置文件。我原以为在启动容器时传递像-e SPRING_PROFILES_ACTIVE=dev这样的环境变量会覆盖命令行设置,但它什么都不做。如果我通过-e spring_profiles_active=dev我得到两个,如Spring Boot日志中所示:... : The following profiles are active: dev,test,而不是我想要的。

  1. 为什么大写版本没有做任何事情,
  2. 为什么小写版本“包含”而不是替换?
  3. 我认为优先顺序是OS环境变量,然后命令行(即-D)然后是application.properites,根据文档:Externalized Configuration

    编辑:纠正上面的拼写错误。此外,我正在使用Spring Boot v1.5.9.RELEASE, Spring v4.3.13.RELEASE,如果我删除-Dspring_profiles_active=test命令行选项,则OS环境变量会按预期传递到应用程序中。

    干杯, 马特

1 个答案:

答案 0 :(得分:0)

使用

-e SPRING_PROFILES_ACTIVE=dev

而不是

-e SPRING_PROFILE_ACTIVE=dev

PROFILES