将Cloud Framework 2.2应用程序发布到CloudFoundry时,VMC无法检测应用程序类型

时间:2013-10-08 13:14:23

标签: cloudfoundry playframework-2.2

我正在使用免费的云代工帐户。今天我尝试推送我的Play 2.2应用程序,但拒绝启动,消息为Unable to detect a supported application type (RuntimeError)

按照the official documentation.

中的说明,将应用程序部署到云代工厂

还有人有这个工作吗?

以下是完整的错误消息:

Preparing to start ***... OK
-----> Downloaded app package (38M)
/var/vcap/packages/dea_next/buildpacks/lib/buildpack.rb:94:in `build_pack': Unable to detect a supported application type (RuntimeError)
from /var/vcap/packages/dea_next/buildpacks/lib/buildpack.rb:72:in `block in compile_with_timeout'
from /usr/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
from /var/vcap/packages/dea_next/buildpacks/lib/buildpack.rb:71:in `compile_with_timeout'
from /var/vcap/packages/dea_next/buildpacks/lib/buildpack.rb:53:in `block in stage_application'
from /var/vcap/packages/dea_next/buildpacks/lib/buildpack.rb:49:in `chdir'
from /var/vcap/packages/dea_next/buildpacks/lib/buildpack.rb:49:in `stage_application'
from /var/vcap/packages/dea_next/buildpacks/bin/run:10:in `<main>'
Checking status of app '***'...Application failed to stage

编辑:我在官方邮件列表上发布了这个问题。还没有答案。但以下是重现该问题的步骤:

  1. 制作新的游戏2.2应用(play new version22
  2. cd进入app目录(cd version22
  3. 构建项目(play dist
  4. 将应用程序推送到云代工厂(cf push --path=target/universal/version22-1.0-SNAPSHOT.zip) - 只需选择默认值
  5. 我想这是由new Feature (What's new in Play 2.2?) 新阶段和dist任务引起的,它改变了应用的包装。这可能导致云代工问题检测应用程序类型。

3 个答案:

答案 0 :(得分:0)

您针对v1或v2定位了哪个云代工厂版本?

您遇到的错误是因为,cf没有播放框架的构建包。

如果您要定位云代工厂v2,请尝试以这种方式推送应用程序:

cf push --buildpack https://github.com/cloudfoundry/java-buildpack

答案 1 :(得分:0)

经过一些试验和错误后,我使用以下manifest.yml在云代工厂v2上进行部署:

---
env:
  JAVA_HOME: .java
applications:
- name: <APP_NAME>
  memory: 512M
  instances: 1
  host: <AP_HOST_NAME>
  domain: cfapps.io
  path: <PATH_TO_ZIP_FILE>
  command: ./<DIR_PACKAGE_NAME>/bin/<APP_NAME>
  buildpack: https://github.com/cloudfoundry/java-buildpack

您必须填写&lt;&gt;之间的信息对于您的应用程序,以及配置其他信息,但核心解决方案是提供JAVA_HOME env变量,以及启动命令的正确路径。

也许我们应该考虑一个SBT任务来创建这个文件作为永久性修复,或者更新java-buildpack ......我不确定哪个是最好的方法。

编辑:您还需要在<DIR_PACKAGE_NAME>/start中放置一个名为start的脚本,否则云代工厂将尝试编译应用程序并惨遭失败 - 我想这需要修复在java-buildpack中也是如此。

答案 2 :(得分:0)

这是confirmed as a bug。应尽快解决。