Play Framework - 如何维护不同环境的配置文件?

时间:2014-02-18 21:11:47

标签: deployment playframework sbt playframework-2.2 config-transformation

对于我的Play 2.2 / Scala应用程序(使用SBT构建),我想根据我正在部署的环境部署不同的配置文件(例如,将部署与特定数据库服务器耦合)。如何为不同的部署目标创建应用程序配置文件(conf / application.conf)的不同变体?希望可以从基础版本生成变体吗?

我从.NET习惯的是拥有一个基本配置文件(Web.config),它根据正在部署的配置文件(例如Production)进行某种转换。是否在Play / Scala世界中使用了类似的技术?

1 个答案:

答案 0 :(得分:16)

Specifying alternative configuration file部分中,

Alternative configuration files在Play的文档中有很好的介绍。

简而言之 - 在application.conf中,您可以放置​​应用的默认配置,此外,您还需要为您的环境创建其他文件,即。 life.confdev.conf等。在这些文件中,您首先需要包含application.conf(将读取整个默认配置),然后只需覆盖部分被改变 - 即。数据库凭据,可以是dev.conf

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"

所以最后你开始申请(dist之后)作为

./start -Dconfig.resource=dev.conf

或使用Play控制台

play -Dconfig.resource=dev.conf run

一些提示:

  • 最好将将“生命”数据库凭据放在默认application.conf文件中,如果某个开发人员忘记包含他的dev.conf他不会损坏生产数据库,而不是你应该把它放在prod.conf
  • 此外,这些附加配置不应放在任何VCS(即.git)存储库中 - 直接在目标计算机上创建它们(并忽略存储库中),确保不会知道生命数据库凭据的人赢了看不见。
  • 也可以使用远程备用配置文件,这可能很有用,即。当您部署同一个应用程序的多个实例时,即。在云中的几个主机上。
  • 每个开发人员都可以拥有自己的配置文件,即dev_aknuds1.confdev_biesior.conf等,因此您可以在repo中使用一种模式dev_*.conf忽略它们。
  • 最后,您可以创建一个shell脚本(unix)或bat文件(Windows)来开始使用选择的配置文件,如start_dev.shrun_dev.sh等,这样您就不需要编写{{ 1}}每次