scala - 如何在heroku上部署lagom scala
问题描述
我是 lagom scala api 的初学者。我已经使用 lagom scala play 框架开发了 rest apis。现在我想在heroku上部署我的服务只是为了实时测试。我按照以下链接继续。
https://www.playframework.com/documentation/2.0/ProductionHeroku
将源代码从 github 连接到 heroku 并进行部署。检查活动构建日志,我发现 heroku 正在后台运行一些进程。在开始...
*----> 检测到 Scala 应用程序
-----> 安装 JDK 1.8... 完成
-----> 运行:sbt 编译阶段
下载 1.2.8 的 sbt 启动器:
To /tmp/scala_buildpack_build_dir/.sbt_home/launchers/1.2.8/sbt-launch.jar
下载 sbt 启动器 1.2.8 md5 哈希:
To /tmp/scala_buildpack_build_dir/.sbt_home/launchers/1.2.8/sbt-launch.jar.md5
/tmp/scala_buildpack_build_dir/.sbt_home/launchers/1.2.8/sbt-launch.jar: OK
获取 org.scala-sbt sbt 1.2.8(这可能需要一些时间)... *
完成后检测到一些错误
[info] Main Scala API documentation to /tmp/scala_buildpack_build_dir/crud-api/target/scala-2.13/api...
model contains 11 documentable templates
[info] Main Scala API documentation successful.
[info] Packaging /tmp/scala_buildpack_build_dir/crud-api/target/scala-2.13/crud-api_2.13-1.0-SNAPSHOT-javadoc.jar ...
[info] Done packaging.
[success] Total time: 9 s, completed Dec 1, 2020 4:01:45 AM
[error] Expected symbol
[error] Not a valid command: -
[error] Expected end of input.
[error] Expected '--'
[error] Expected 'debug'
[error] Expected 'info'
[error] Expected 'warn'
[error] Expected 'error'
[error] Expected 'addPluginSbtFile'
[error] -Xms512M
[error] ^
!错误:无法运行 sbt!
We're sorry this build is failing. If you can't find the issue in application
code, please submit a ticket so we can help: https://help.heroku.com
You can also try reverting to the previous version of the buildpack by running:
$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-scala#previous-version
Thanks,
Heroku
!Push 被拒绝,无法编译 Scala 应用程序。
!推送失败
有什么我想念的吗?或者,如果您对如何在 heroku 或任何其他平台上部署 lagom scala api 以进行实时测试有任何其他想法。提前致谢。
解决方案
一般来说,在 Heroku 上部署 Lagom 是不可能的,因为 Heroku 有一个限制:服务相同服务的 dyno 无法相互连接。Lagom 建立在 Play 之上,但最重要的是,建立在 Akka Clister 之上。要形成一个集群,Akka 集群节点必须相互通信。
还有一个单独的问题,它实际上触发了您看到的错误,即 Lagom 项目通常是一个单一构建中包含许多服务的单一存储库。有时,构建只是一个服务 API sbt 模块和服务实现模块。在任何情况下,部署到 Heroku 都需要您将单个服务推送到 Heroku git repo。因此,您必须改进 Play/sbt buildpack 以支持 Lagom 项目:当检测到 Lagom 项目时,忽略 API 模块并仅部署实现。
但是,同样,即使您对 buildpack 进行了改进,您仍然会被 Dynos 之间的网络分离造成的集群形成障碍所阻碍。
推荐阅读
- kotlin - Kotlin Coroutines 通道在 fixedRateTimer 内发送
- javascript - 如何在 React 中提出更有效的请求以提高性能?
- python-3.x - 无法使用 python 3.8.3 导入 urllib.request
- firebase - 溪流
返回空文档 - php - html 搜索表单如何检查 mysql 表并给出结果是否存在
- php - 如何修复:标头已发送
- angular - Firebase 托管和 Angular 中的动态链接问题
- python - 使用 csv 文件在 pandas 中找不到文件错误
- huawei-mobile-services - 我在天气 API 中遇到问题,HMS Weather Awareness 中的 getLiveInfo() 总是返回空值
- xml - 分层列/名称-值属性的 XPath?