SpringBoot 2.1.3.RELEASE:无法从application.properties读取环境属性

问题描述 投票:0回答:1

我试图从我的application.properties domains.integrationService=${INTEGRATION_SERVICE_DOMAIN:http://localhost:1337}读取环境变量。

env属性设置在我的docker容器内(检查它),但不知何故spring无法从.properties读取它。因此,它最终设置http://localhost:1337

这在使用2.0.0版Spring Boot的其他项目中运行良好。

我认为他们放弃了这个功能。我不想在项目中的.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

如果有任何解决方案,请告诉我。

java spring spring-boot docker environment-variables
1个回答
0
投票

只需信任Spring Boot就可以开箱即用。

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

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

domains.integrationService=http://localhost:1337

您可以通过设置一个类似命名的环境变量来覆盖此“默认”值。在此示例中,至少domains.integrationServiceDOMAINS_INTEGRATION_SERVICE环境变量将被自动拾取以覆盖application.properties中的值。它不会单独反转单词,所以INTEGRATION_SERVICE_DOMAIN将不起作用。

尝试它(在docker之外):

export DOMAINS_INTEGRATION_SERVICE=https://dummy.com
© www.soinside.com 2019 - 2024. All rights reserved.