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

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

请您参考如下方法:

Alternative configuration files Play 的文档在 Specifying alternative configuration file 部分中得到了很好的介绍。 .

总之——在application.conf您放置应用程序的默认配置,此外您还需要为您的环境创建其他文件,即。 life.conf , dev.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.conf , dev_biesior.conf等等,所以你可以用一种模式忽略它们 dev_*.conf在 repo 。
  • 最后,您可以创建一个 shell 脚本(unix)或 bat 文件(Windows)来开始使用选择的配置文件,如 start_dev.sh , run_dev.sh等等,所以你不需要写 -Dconfig.resource=...每次

  • 评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!