我已经看了一下,但我不清楚如何为Play框架应用程序配置一组特定于环境的变量。Play框架应用程序中环境特定的配置
作为一个例子,我想在本地开发中使用像h2这样的内存数据库,但是当我转移到生产或我的预生产环境时,我想连接到postgres数据库。
如何配置我的应用程序,以便它将使用与其部署环境相关的变量?这是一个Scala Play应用程序。
我已经看了一下,但我不清楚如何为Play框架应用程序配置一组特定于环境的变量。Play框架应用程序中环境特定的配置
作为一个例子,我想在本地开发中使用像h2这样的内存数据库,但是当我转移到生产或我的预生产环境时,我想连接到postgres数据库。
如何配置我的应用程序,以便它将使用与其部署环境相关的变量?这是一个Scala Play应用程序。
一个选项(如优秀游戏docs中记录的)是在应用程序启动过程中指定conf文件。
使用-Dconfig.resource
将在应用程序类路径中搜索备用配置文件(通常在打包之前将这些备用配置文件提供到您的应用程序conf /目录中)。游戏会查看conf /,所以你不必添加conf /。
$ /path/to/bin/<project-name> -Dconfig.resource=prod.conf
使用-Dconfig.file
您可以指定不打包到应用程序工件的环境特定的配置文件:
$ start -Dconfig.file=/opt/conf/prod.conf
使用-Dconfig.url
你也可以指定一个配置文件从任何URL加载
$ start -Dconfig.url=http://conf.mycompany.com/conf/prod.conf
请注意,您始终可以使用include方法在新的prod.conf文件中引用原始配置文件ve,例如:
include "application.conf"
key.to.override=blah
您可以使用Puppet或其他类似工具在environment.conf中生成所需的参数并放置在专用目录中。
然后,在application.conf,在该文件的结束时,有这样的:
include "file:///[your directory...]/environment.conf"
覆盖上述
可以使用不同的配置中列出的任何测试或局部值(egDB parameteres)通过覆盖的Global
对象像onLoadConfig
方法文件:
object Global extends GlobalSettings {
override def onLoadConfig(config: Configuration, path: File, classloader: ClassLoader, mode: Mode.Mode): Configuration = {
val fileName = s"application.${mode.toString.toLowerCase}.conf"
config ++ Configuration(ConfigFactory.load(fileName))
}
}
这种方式,你有“application.test.conf”测试模式和'application.dev.conf'用于开发模式,而您可以通过'-Dconfig.file'参数在生产中使用另一个配置文件。