2

我已經看了一下,但我不清楚如何爲Play框架應用程序配置一組特定於環境的變量。Play框架應用程序中環境特定的配置

作爲一個例子,我想在本地開發中使用像h2這樣的內存數據庫,但是當我轉移到生產或我的預生產環境時,我想連接到postgres數據庫。

如何配置我的應用程序,以便它將使用與其部署環境相關的變量?這是一個Scala Play應用程序。

回答

6

一個選項(如優秀遊戲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 
0

您可以使用Puppet或其他類似工具在environment.conf中生成所需的參數並放置在專用目錄中。

然後,在application.conf,在該文件的結束時,有這樣的:

include "file:///[your directory...]/environment.conf" 

覆蓋上述

0

可以使用不同的配置中列出的任何測試或局部值(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'參數在生產中使用另一個配置文件。

相關問題