第一次尝试使用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的脚本。我在配置中缺少什么?
答案 0 :(得分:2)
我认为你需要在build.sbt文件中设置name =。
我一直在Heroku中使用新的Spray-can / spray / akka应用程序,并且发现大多数文档都是混乱的历史信息。
我现在已经部署了我的应用程序(最终!)。我正在使用:
在你想要的项目/ 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