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

Deployment Play Framework-如何维护不同环境的配置文件?,deployment,playframework,sbt,playframework-2.2,config-transformation,Deployment,Playframework,Sbt,Playframework 2.2,Config Transformation,对于my/Scala应用程序(使用SBT构建),我希望根据部署到的环境部署不同的配置文件(例如,将部署与特定的数据库服务器耦合)。如何为不同的部署目标创建应用程序配置文件(conf/application.conf)的不同变体?希望可以从基本版本生成变体 我习惯于从.NET创建一个基本配置文件(Web.config),该文件会根据正在部署的配置文件(例如生产)进行某种转换。在Play/Scala世界中是否使用了类似的技术?在Play文档的指定替代配置文件一节中有详细介绍 简言之,在applica

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

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

在Play文档的
指定替代配置文件一节中有详细介绍

简言之,在
application.conf
中,您放置应用程序的默认配置,此外,您还需要为您的环境创建其他文件,例如
life.conf
dev.conf
等。在这些文件中,您首先需要包含
application.conf
(将读取整个默认配置)接下来只覆盖必须更改的部分,即.DB凭据,它可以是
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
之后),如下所示

或者用游戏机

play -Dconfig.resource=dev.conf run
以下几点提示:

  • 最好不要将“life”DB凭据放在默认的
    application.conf
    文件中,如果某些开发人员忘记包含他的
    dev.conf
    他不会损坏生产数据库,那么您应该将其放在
    prod.conf
  • 此外,这些额外的配置不应该放在任何VCS(即git)存储库中-直接在目标机器上创建它们(并在存储库中忽略它们)可以确保,不应该知道life数据库凭据的人不会看到它
  • 也可以使用远程可选配置文件,当您在云中的多个主机上部署同一应用程序的多个实例时,该文件非常有用
  • 每个开发人员都可以拥有自己的配置文件,例如
    dev_aknuds1.conf
    dev_biesior.conf
    等,因此您可以在repo中使用一种模式
    dev_uds1.conf
    忽略它们
  • 最后,您可以创建一个shell脚本(unix)或bat文件(Windows)来开始使用选择的配置文件,如
    start\u dev.sh
    run\u dev.sh
    等,这样您就不必每次都编写
    -Dconfig.resource=…

是的,但它没有说明如何生成配置文件变体,这是这里的核心问题。这不正是biesor刚才向您描述的吗?Include将一个配置文件建立在另一个配置文件的基础上,只覆盖您希望不同的设置。@johanandren自我第一次发表评论以来,答案已经展开。现在我还看到文档中提到了“包含”技术;现在我意识到了这一点,很容易发现,我希望这对新手来说更明显。。。总而言之,这看起来确实是一个很好的解决方案。
play -Dconfig.resource=dev.conf run