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'参数在生产中使用另一个配置文件。

相关问题