我试图从我的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
如果有任何解决方案,请告诉我。
只需信任Spring Boot就可以开箱即用。
正如in the documentation所解释的,PropertySource将首先读取属性文件,然后使用环境变量(以及其他位置,请参阅doc以了解所有可能性和优先顺序)覆盖加载的值。
因此,如果您的application.properties包含:
domains.integrationService=http://localhost:1337
您可以通过设置一个类似命名的环境变量来覆盖此“默认”值。在此示例中,至少domains.integrationService
和DOMAINS_INTEGRATION_SERVICE
环境变量将被自动拾取以覆盖application.properties
中的值。它不会单独反转单词,所以INTEGRATION_SERVICE_DOMAIN
将不起作用。
尝试它(在docker之外):
export DOMAINS_INTEGRATION_SERVICE=https://dummy.com