在 Heroku 上喷涂应用程序:找不到从舞台命令创建的脚本



第一次尝试使用喷雾/scala,但我在 Heroku 上遇到了部署错误

这是成功运行后本地目标目录的内容sbt clean compile stage

Anadis-MacBook-Pro:mail-service anadi$ cd target/universal/stage/bin/
Anadis-MacBook-Pro:bin anadi$ ls -ltr
total 40
-rw-r--r--  1 anadi  staff   4877 Feb  3 19:10 mail-service.bat
-rwxr--r--  1 anadi  staff  10973 Feb  3 19:10 mail-service

我能够在本地启动从spray-github克隆的喷雾应用程序

19:18:14 web.1  | started with pid 46761
19:18:20 web.1  | [INFO] [02/03/2015 19:18:20.367] [on-spray-can-akka.actor.default-dispatcher-4] [akka://on-spray-can/user/IO-HTTP/listener-0] Bound to localhost/127.0.0.1:8080

但它在 Heroku 上失败

2015-02-03T13:46:07.695518+00:00 heroku[web.1]: Starting process with command `target/universal/stage/bin/mail-service`
2015-02-03T13:46:09.308482+00:00 app[web.1]: bash: target/universal/stage/bin/mail-service: No such file or directory

更新

按照@n1r3的建议运行heroic run bash

heroku run bash
Running `bash` attached to terminal... up, run.3163
~ $ pwd
/app
~ $ ls -ltr
total 32
-rw------- 1 u57873 57873   23 Feb  3 13:41 system.properties
drwx------ 4 u57873 57873 4096 Feb  3 13:41 src
-rw------- 1 u57873 57873  657 Feb  3 13:41 build.sbt
-rw------- 1 u57873 57873  317 Feb  3 13:41 UPDATING.md
-rw------- 1 u57873 57873 1581 Feb  3 13:41 README.markdown
-rw------- 1 u57873 57873   45 Feb  3 13:41 Procfile
drwx------ 4 u57873 57873 4096 Feb  3 13:42 project
drwx------ 4 u57873 57873 4096 Feb  3 13:45 target
~ $ ls -ltr target/universal/stage/     
total 8
drwx------ 2 u57873 57873 4096 Feb  3 13:44 lib
drwx------ 2 u57873 57873 4096 Feb  3 13:44 bin
~ $ ls -ltr target/universal/stage/bin/
total 20
-rw------- 1 u57873 57873  5020 Feb  3 13:44 scala_buildpack_build_dir.bat
-rwx------ 1 u57873 57873 10986 Feb  3 13:44 scala_buildpack_build_dir

因此,脚本名为scala_buildpack_build_dir,而 Heroku 需要一个名为 mail_service 的脚本。配置中缺少什么?

我认为您需要在build.sbt文件中设置name=。

我也一直在努力在 Heroku 中使用新的 Spray-can/spray/akka 应用程序,发现大多数文档都是一堆历史信息。

我现在已正常部署我的应用程序(终于! 我正在使用:

  • SBT 0.13.6,
  • 斯卡拉 2.10.4,
  • SBT-本机打包程序 1.0.0-M4
  • git 1.9.5
  • 英雄工具带 3.25.0
  • 爪哇 1.8

在你的项目/plugins.sbt中,你需要:

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0-M4")

在项目/生成属性中:

sbt.version=0.13.6

在你的根build.sbt中,你想要,以及正常的东西:

名称 := "我的服务器" enablePlugins(JavaAppPackaging)

不要试图使用enablePlugins(AkkaAppPackaging) - 它会生成一个非常不同的shell脚本,你会得到一个"akka主类"未找到错误。

在根 Procfile 中:

Web: target/universal/stage/bin/myserver

澄清一下,这个Procfile的意思是"运行shell脚本target/universal/stage/bin/myserver来启动我的Web服务器"。 如果在本地运行"sbt 编译阶段",则可以在本地查看脚本的副本。 你也可以使用 bash,如上所述,查看在 Heroku 服务器上生成的版本。

1.0 sbt 本机打包程序似乎会自动找到您的 Web 服务器入口点并将其作为默认值放入 shell 文件中,因此您无需将其添加到 Procfile 的末尾。 即您不需要

web: target/universal/stage/bin/myserver web.主要

最新更新