【发布时间】:2019-04-15 20:37:30
【问题描述】:
我写了一个简单的 spring boot 应用程序(版本 springboot 2.0),它使用了 mysql(版本 5.7)。
application.properties sn-p
spring.datasource.url = jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username = testuser
spring.datasource.password = testpassword
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
当我在本地运行它时,它工作正常。 如果我想在 docker 中运行这个 spring boot 应用程序,那么我可以更改
spring.datasource.url = jdbc:mysql://mysql-container:3306/test?useSSL=false
mysql-container 使用来自 dockerhub 的 mysql:5.7 映像运行。
但是我想从一些占位符属性文件中更改主机的值。所以这看起来像:
spring.datasource.url = jdbc:mysql://${MYSQL_HOST}:3306/test?useSSL=false
注意:我不确定占位符格式。是 ${MYSQL_HOST} 还是 @MYSQL_HOST@ ?
您可以将此占位符文件命名为 placeholder.properties 或 placeholder.conf 或 .env 或任何名称。该文件的内容应类似于:
MYSQL_HOST=localhost
或
MYSQL_HOST=some ip address
我可以创建 .env 或 .env.test 或 .env.prod,我可以根据我想要运行应用程序的位置引用该 env 文件。
更新 -
我有两个问题:
我应该将 placeholder.properties 保存在哪里?是在 /config/ 下还是某个特定目录下?
如何在 application.properties 中调用占位符?
有人可以推荐吗?
【问题讨论】:
-
我在 application.properties 中使用了 place Holder,例如 ${environment_prefix} 你可以试试这个它会起作用。
-
我尝试了 ${MYSQL_HOST},但没有成功。我应该在哪里保存 placeholder.properties 文件?检查更新的描述。
-
请查看已发布的答案。你的建议肯定有帮助。
标签: mysql docker spring-boot kubernetes