5

我按照这里的说明https://developer.cloudbees.com/bin/view/RUN/Playframework并且可以部署。但它只使用application.conf。

我的应用 ID 是“mrm”,所以我在 conf 目录中创建了一个“mrm.conf”。

然后我尝试了“play cloudbees-deploy-config mrm”,但在部署后我收到以下错误消息:

[success] Total time: 110 s, completed Mar 15, 2013 9:08:36 PM
[error] Not a valid command: mrm (similar: run)
[error] Expected '/'
[error] Expected ':'
[error] Not a valid key: mrm (similar: run)
[error] mrm

并且部署仍然使用application.conf

然后我运行play,输入:“cloudbees-deploy-config mrm”我没有错误,但是这种方式也部署了application.conf

我的“mrm.conf”包含以下内容:

include "application.conf"
cloudbees.applicationId=mrm

我尝试按照此拉取请求中描述的说明进行操作: https ://github.com/CloudBees-community/sbt-cloudbees-play-plugin/pull/1

根据 play help 应该是这样的:

cloudbees-deploy-config

  Deploy a configuration of your app to a Run@Cloud app id. Arguments are:
  (1) the base name of a conf file in your project's conf directory, defaulting to     "application"/
  (2) Optional. The application id to which this configuration should deploy. You can omit this
      arg if you have either set cloudbees.applicationId in the config file from the first
      arg or have set the project ID in your PlayProject.

  Example usage: `> cloudbees-deploy-config live`, where live.conf exists in the project's conf/
  directory and contains a key cloudbees.applicationId.

关于我可能做错的任何提示?我需要它在 cloudbees 部署中使用 mrm.conf ......

回答:

play "cloudbees-deploy-config mrm"

更新:刚刚在我的博客上发布了解决方案的摘要:http ://www.poornerd.com/2013/04/08/how-deploy-play-framework-apps-with-different-configurations-to-cloudbees/

4

3 回答 3

5

如何在 CloudBees 上调整应用程序/框架的配置因框架而异。您需要使用的基本技术是:

  1. 弄清楚在本地运行时如何告诉应用加载此备用配置文件
  2. 弄清楚如何让 CloudBees 在启动应用程序时做同样的事情

加载备用播放配置文件

根据 Play2 站点上的ConfigurationProductionConfiguration文档,您似乎可以指定 -Dconfig.resource=CONF_FILENAME 系统属性来告诉 Play2 加载您的替代配置:

使用 -Dconfig.resource

它将在应用程序类路径中搜索替代配置文件(您通常在打包之前将这些替代配置文件提供到您的应用程序 conf/ 目录中)。

 $ start -Dconfig.resource=prod.conf

基于此,我们现在知道如何告诉您的运行时框架(Play)加载备用配置文件。接下来,我们需要弄清楚让 CloudBees 做同样的事情。

在 CloudBees 上设置系统属性

CloudBees SDK包括用于设置应用程序配置参数的命令行选项,这些参数将在启动期间作为系统属性(对于基于 JVM 的应用程序)注入。这可以通过在 app:deploy 命令行上指定 -Pname=value 选项来完成,或者您可以改用 config:set 命令。

由于您使用 SBT 插件来部署您的应用程序(可能不支持此功能),因此使用 SDK 的 config:set 命令可能是最简单的:

bees config:set -a APPID config.resource=mrm.conf

注意:您需要重新启动应用程序才能应用此配置参数

如果我正确理解 Play2 文档,这应该会导致 Play 在 conf/mrm.conf 中加载配置文件。

更简单的解决方案?- 只需覆盖密钥

根据您的示例,我注意到您似乎试图仅覆盖默认 application.conf 文件中特定配置键的值...

查看 Play ProductionConfiguration文档,似乎覆盖整个配置文件可能是矫枉过正,而您可以简单地使用系统属性指定要覆盖的值。CloudBees SDK config:set命令专为此用例而设计,为您注入自定义应用程序参数提供了一种简单的方法。CloudBees 上基于 Java 的堆栈会将这些参数作为系统属性注入,这意味着它们应该由您的 Play 应用程序自动获取。

根据您的 mrm.conf 文件中的示例覆盖,以下内容应该有效:

bees config:set -a APPID cloudbees.applicationId=mrm

如果这对您有效,我会将其中一些信息添加回CloudBees Play文档。

于 2013-03-28T16:48:50.483 回答
0

我建议逆转情况:对于实时应用程序,将 CloudBees 所需的所有配置都放入其中,application.conf这样您就不需要覆盖配置文件。

在本地机器上创建类似 local_conf.conf 的内容,并且只有 CloudBees 特定的“停用”配置参数。另外,您可以在本地环境中编写单行 bash 脚本,以运行具有附加配置的应用程序(因此您无需每次都使用 -Dconfig.file-...”。

于 2013-03-15T21:52:19.200 回答
0

这只是部分解决方案,但是:

如果我开始玩,然后输入“cloudbees-deploy-config mrm”,然后它与 mrm.conf 一起部署

于 2013-03-16T20:16:15.463 回答