SpringBoot 2.1.3.RELEASE:无法从application.properties

时间:2019-04-30 10:21:25

标签: java spring spring-boot docker environment-variables

我正在尝试从application.properties中读取环境变量 domains.integrationService=${INTEGRATION_SERVICE_DOMAIN:http://localhost:1337}

env属性设置在我的docker容器内(选中),但是spring无法从.properties读取它。因此,最终设置为http://localhost:1337

这在使用2.0.0版本的SpringBoot的其他项目中效果很好。

我认为他们放弃了此功能。我不想在项目的.properties中对这些值进行硬编码。

我在码头工人中的.env

INTEGRATION_SERVICE_DOMAIN=https://dummy.com

我的Docker运行命令

docker run -d -p 1100:1100 --restart unless-stopped --env-file ~/.env --network=\"host\" -v /var/log/dummy-project:/usr/src/app/logs -v /tmp:/usr/src/app/tmp --name dummy-project

让我知道是否有解决方案。

1 个答案:

答案 0 :(得分:0)

只需信任Spring Boot即可立即完成工作。

in the documentation所述,PropertySource将首先读取属性文件,然后使用环境变量(和其他位置的值)覆盖加载的值(有关所有可能性和优先顺序,请参阅文档)。

因此,如果您的application.properties包含:

domains.integrationService=http://localhost:1337

您可以通过设置类似名称的环境变量来覆盖此“默认”值。在此示例中,将至少自动选取domains.integrationServiceDOMAINS_INTEGRATION_SERVICE个环境变量,以覆盖application.properties中的值。不过,它不会自动反转单词,因此INTEGRATION_SERVICE_DOMAIN无法正常工作。

(在docker之外)尝试使用:

export DOMAINS_INTEGRATION_SERVICE=https://dummy.com