我正在尝试从我的 application.properties 中读取环境变量
domains.integrationService=${INTEGRATION_SERVICE_DOMAIN:http://localhost:1337}
。
env 属性设置在我的 docker 容器内(已检查),但不知何故 spring 无法从 .properties
读取它。因此,它最终设置http://localhost:1337
。
这在使用 2.0.0 版本的 SpringBoot 的其他项目中运行良好。
我认为他们放弃了这个功能。我不想在项目的 .properties
中对这些值进行硬编码。
我在 docker 中的 .env
。
INTEGRATION_SERVICE_DOMAIN=https://dummy.com
我的 Docker 运行命令
docker run -d -p 1100:1100 --restart except-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 将首先读取属性文件,然后使用环境变量中的值覆盖加载的值(以及其他位置,请参阅文档了解所有可能性和优先顺序)。
因此,如果您的 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
关于java - Spring Boot 2.1.3.RELEASE : Not able to read environment properties from application. 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55918859/