第一次尝试使用喷雾/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.主要