在cloudbees上部署时,如何指定用户使用哪个application.conf

Bri*_*ter 5 playframework-2.0 cloudbees

我按照这里的说明https://developer.cloudbees.com/bin/view/RUN/Playframework进行了部署.但它只使用application.conf.

我的应用程序ID是"mrm",所以我在conf目录中创建了一个"mrm.conf".

然后我尝试了"播放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
Run Code Online (Sandbox Code Playgroud)

部署仍在使用application.conf

然后我跑了,然后进入:"cloudbees-deploy-config mrm"我没有错误,但这种方式也部署了application.conf

我的"mrm.conf"包含这个:

include "application.conf"
cloudbees.applicationId=mrm
Run Code Online (Sandbox Code Playgroud)

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

根据播放帮助,应该可以这样:

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.
Run Code Online (Sandbox Code Playgroud)

我可能做错什么的提示?我需要它在cloudbees部署上使用mrm.conf ...

回答:

play "cloudbees-deploy-config mrm"
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

  1. 弄清楚如何在本地运行时告诉您的应用加载此备用配置文件
  2. 了解如何在启动应用程序时使CloudBees完全等效

加载备用播放配置文件

根据Play2站点上的ConfigurationProductionConfiguration文档,您可以指定-Dconfig.resource = CONF_FILENAME系统属性,以告知Play2加载您的备用配置:

使用-Dconfig.resource

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

 $ start -Dconfig.resource=prod.conf
Run Code Online (Sandbox Code Playgroud)

基于此,我们现在知道如何告诉您的运行时框架(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
Run Code Online (Sandbox Code Playgroud)

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

如果我正确理解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
Run Code Online (Sandbox Code Playgroud)

如果这适合您,我会将一些信息添加回CloudBees Play文档.


Bri*_*ter 0

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

如果我开始玩,然后输入“cloudbees-deploy-config mrm”,然后它会使用 mrm.conf 进行部署