Play Framework - How to maintain configuration files for different environments?
对于我的Play 2.2 / Scala应用程序(使用SBT构建),我想根据要部署到的环境来部署不同的配置文件(例如,将部署与特定的数据库服务器耦合)。如何为不同的部署目标创建应用程序配置文件(conf / application.conf)的不同变体?希望可以从基本版本中生成变体吗?
我从.NET惯用的是拥有一个基本配置文件(Web.config),该文件会根据要部署的配置文件(例如生产)进行某种转换。在Play / Scala世界中是否使用类似的技术?
Play的文档中
简而言之-在
1 2 3 4 5 6 | include"application.conf" db.default.driver=org.h2.Driver db.default.url="jdbc:h2:mem:alternative-database-for-dev-testing" db.default.user=developer db.default.password="developerpass" |
所以最后您以
的身份启动应用程序(在
1 | ./start -Dconfig.resource=dev.conf |
或使用Play控制台
1 | play -Dconfig.resource=dev.conf run |
一些提示:
-
最好不要将您的"生命"数据库凭据放置在默认的
application.conf 文件中,如果某些开发人员会忘记包括他的dev.conf ,那么他不会破坏生产数据库,而是应该将在prod.conf 中。 - 另外,不应将这些其他配置放在任何VCS(即git)存储库中-直接在目标计算机上创建它们(并在存储库中忽略)可以使您确定,那些不应该知道生命数据库凭证的人会\\没看到。
- 也可以使用远程备用配置文件,这可能很有用。当您部署同一应用程序的多个实例时,即。在云中的几台主机上。
-
每个开发者可以拥有自己的配置文件,即
dev_aknuds1.conf ,dev_biesior.conf 等,因此您可以在回购中使用一个模式dev_*.conf 忽略它们。 -
最后,您可以只创建一个shell脚本(unix)或bat文件(Windows)来开始使用所选的配置文件,例如
start_dev.sh ,run_dev.sh 等。因此,您不必每次都编写-Dconfig.resource=...