如何在启动“dist”应用程序时指定播放模式(prod,dev)

时间:2015-06-04 16:55:04

标签: scala playframework typesafe-activator

我想知道如何在 dist 中启动打包的play v2.3.7应用程序(由 Prod 命令创建)和 Dev 模式。

我们使用 sbt dist 创建可分发工件,根据these instructions生成zip文件。我们将zip文件复制到它将运行的机器上,将其解压缩,然后根据that page上的说明启动它。但是,它始终会启动,以便 Play.isProd 评估为 true

在开发我们的应用程序时,我们可以使用 activator start 启动它,这会导致 Play.isProd 返回 true ,或 activator run / activator test ,导致 Play.isProd 返回 false

我们想知道是否有任何方法可以启动打包的应用程序并能够控制 Play.isProd 的状态,以便我们可以运行测试实例我们的测试服务器,以及我们的prod服务器上的prod实例。

我们目前的解决方法是在 application.conf 中设置自定义设置,并使用 Play.current.configuration.getBoolean("play_mode").getOrElse(true) 进行检查。我觉得我们应该使用内置功能。<​​/ p>

2 个答案:

答案 0 :(得分:1)

不确定我是否完全理解你的问题,但现在就去了。

我的自发建议是使用环境变量,因为这总是将配置与代码分离,并将特定配置绑定到计​​算机/环境。

但要回答你的问题:)

可以有一个额外的.conf文件,并设置一个在开始/运行时使用的文件:

activator start "-Dconfig.resource=dev.conf"

如果这是临时修复,则可以直接从命令行覆盖特定的配置键:

activator start "-Dapplication.some.conf=override -Ddb.default.password=some_pass"

// This might even work, not sure
activator start "-Dapplication.mode=DEV"

了解更多:

https://www.playframework.com/documentation/2.3.x/ProductionConfiguration

答案 1 :(得分:0)

似乎 isProd 标志意味着与我们假设完全不同的东西:它只控制应用程序是否运行或不运行类重载。换句话说,我们的&#34;解决方法&#34;实际上是获得我们想要的正确方法。

如果有人有更多要补充的话,我会暂时保持这种状态,但据我所知,现在可以关闭。