在Heroku上喷涂app:无法找到从stage命令创建的脚本

时间:2015-02-03 14:20:08

标签: bash scala heroku spray

第一次尝试使用spray / 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

&安培;我可以启动从本地<{3}}克隆的喷雾应用程序

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的脚本。我在配置中缺少什么?

1 个答案:

答案 0 :(得分:2)

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

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

我现在已经部署了我的应用程序(最终!)。我正在使用:

  • sbt 0.13.6,
  • scala 2.10.4,
  • sbt-native-packager 1.0.0-M4
  • git 1.9.5
  • Heroku toolbelt 3.25.0
  • Java 1.8

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

  

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

在project / build.properties中:

  

sbt.version = 0.13.6

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

  

name:=“myserver”   enablePlugins(JavaAppPackaging)

不要试图使用enablePlugins(AkkaAppPackaging) - 它会生成一个非常不同的shell脚本,你会发现'akka main class'找不到错误。

在根Procfile中:

  

web:target / universal / stage / bin / myserver

为了澄清,这个Procfile意味着“运行shell脚本target / universal / stage / bin / myserver来启动我的Web服务器”。如果在本地运行“sbt compile stage”,则可以在本地查看脚本的副本。您也可以使用bash,如上所述,查看Heroku服务器上生成的版本。

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

  

web:target / universal / stage / bin / myserver web.Main