我正在尝试从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
让我知道是否有解决方案。
答案 0 :(得分:0)
只需信任Spring Boot即可立即完成工作。
如in the documentation所述,PropertySource将首先读取属性文件,然后使用环境变量(和其他位置的值)覆盖加载的值(有关所有可能性和优先顺序,请参阅文档)。
因此,如果您的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