5

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

我对.NET 的习惯是有一个基本配置文件(Web.config),它会根据正在部署的配置文件(例如生产)进行一定的转换。有人在 Play/Scala 世界中使用类似的技术吗?

4

1 回答 1

18

Play 的文档中很好地介绍了替代配置文件Specifying alternative configuration file的部分。

简而言之-在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)存储库中 - 直接在目标机器上创建它们(并在存储库中忽略)可以确定,不应该知道生命数据库凭据的人不会看到它。
  • 也可以使用远程替代配置文件,这很有用,即。当您部署同一应用程序的多个实例时,即。在云中的多个主机上。
  • 每个开发人员都可以有自己的配置文件 iedev_aknuds1.conf等,因此您可以在 repo 中dev_biesior.conf使用一种模式忽略它们。dev_*.conf
  • 最后,您可以创建一个 shell 脚本 (unix) 或 bat 文件 (Windows) 来开始使用选择的配置文件,例如 等start_dev.shrun_dev.sh这样您就不需要-Dconfig.resource=...每次都编写
于 2014-02-18T22:30:44.523 回答