如何在heroku上部署lagom scala

Posted

技术标签:

【中文标题】如何在heroku上部署lagom scala【英文标题】:How to deploy lagom scala on heroku 【发布时间】:2021-03-13 01:24:02 【问题描述】:

我是 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 启动器:

来自https://repo.scala-sbt.org/scalasbt/maven-releases/org/scala-sbt/sbt-launch/1.2.8/sbt-launch-1.2.8.jar

To  /tmp/scala_buildpack_build_dir/.sbt_home/launchers/1.2.8/sbt-launch.jar

正在下载 sbt 启动器 1.2.8 md5 哈希:

来自https://repo.scala-sbt.org/scalasbt/maven-releases/org/scala-sbt/sbt-launch/1.2.8/sbt-launch-1.2.8.jar.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 以进行实时测试有任何其他想法。 提前致谢。

【问题讨论】:

【参考方案1】:

一般来说,在 Heroku 上部署 Lagom 是不可能的,因为 Heroku 有一个限制:提供相同服务的 dyno 无法相互连接。 Lagom 建立在 Play 之上,但最重要的是,建立在 Akka Clister 之上。 要形成一个集群,Akka Cluster 节点必须相互通信。

还有一个单独的问题,它实际上会触发您看到的错误,即 Lagom 项目通常是一个单一构建中包含许多服务的单一存储库。有时,构建只是一个服务 API sbt 模块和服务实现模块。在任何情况下,部署到 Heroku 都需要您将单个服务推送到 Heroku git 存储库。因此,您必须改进 Play/sbt buildpack 以支持 Lagom 项目:当检测到 Lagom 项目时,忽略 API 模块并仅部署实现。

但是,同样,即使您对 buildpack 进行了改进,您仍然会被 Dynos 之间的网络分离造成的集群形成障碍所阻止。

【讨论】:

所以根据你的说法,不可能在 heroku 上部署 lagom scala api。有没有其他流程可以参考我进行测试

以上是关于如何在heroku上部署lagom scala的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Heroku 上部署 Flutter Web

如何在 Heroku 上使用 Channels 和 Celery 部署 Django?

如何在部署在 heroku 上的解析服务器上使用云代码?

如何在Heroku上部署时配置/设置命令

如何在Heroku免费计划上部署laravel-websockets服务器?

如何在已部署的 Heroku 应用上查看文件和文件结构