我已經看了一下,但我不清楚如何爲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'參數在生產中使用另一個配置文件。