【发布时间】:2017-03-30 04:49:38
【问题描述】:
有没有人幸运地将 JHipster 应用程序部署到 Heroku?我认为需要自定义 buildpack,但我不是 100% 确定,因为我是 Heroku 的新手。
【问题讨论】:
-
在 Heroku 上周更新我的数据库之前,它一直在工作。现在不行了。
有没有人幸运地将 JHipster 应用程序部署到 Heroku?我认为需要自定义 buildpack,但我不是 100% 确定,因为我是 Heroku 的新手。
【问题讨论】:
我已经使用您的 cmets 为 JHipster 启动了 Heroku 子生成器:
https://github.com/jhipster/generator-jhipster/tree/master/heroku
我已经让它工作了,我只需要在它正式发布之前进行一些调整。
关于内存和启动超时问题,我都可以正常工作。
【讨论】:
我在尝试部署到 Heroku 时遇到了两个问题。
第一个问题,Heroku 将我的应用程序检测为Node.js,因为package.json 文件位于根目录中。好的,只需创建一个 .slugignore 文件并忽略 package.json 即可轻松修复。现在它识别出pom.xml 并构建。
第二个问题,默认jhipster的slug大小约为340mb。 “slug”基本上是应用程序构建时引入的所有依赖项的大小。 Heroku 允许的最大 slug 大小为 300MB。而不是尝试对依赖项进行排序并剥离我切换到使用 Amazon Elastic Beanstalk 的功能。与其在 Amazon 的服务器上构建,不如将压缩的 .war 文件部署到 Tomcat 环境中,这样可以正常工作。
我很想知道在 Heroku 上是否有人比我运气好,但我会分享我的发现。
更新
我在连接到 Amazon RDS PostgreSQL 数据源的同时成功地将股票 jhipster 应用程序部署到 Elastic Beanstalk 上的 t1.micro(最小)实例。此实例有资格获得免费套餐(1 年)并为您提供 1GB 内存。我必须做的唯一配置更改是将 JVM Heap + PermGen 空间分别提高到 512MB 和 128MB。就像运行“mvn package -Pprod”然后获取 app_name.war.original(没有嵌入 tomcat 的那个)并将其部署到实例 Tomcat 服务器一样简单。
以下是几乎无负载运行时 UI 中的 JVM 统计数据:
【讨论】:
@CMikeB1 提到的两个问题可以通过使用自定义构建包来解决。有一个连接java和node的fork:https://github.com/lordviktor/heroku-buildpack-java-node-yeoman-submodule。我已经分叉了这个以删除 .m2 目录并减少 de slug 大小https://github.com/jbaris/heroku-buildpack-java-node-yeoman-submodule。
Buuut,有两个新问题:
错误 R14(超出内存配额):免费帐户有 512 MB 的 RAM:这会导致 dynos 交换和性能损失。考虑一下默认的 JHipster 应用程序需要大约 800 MB 的 RAM。
Error R10 (Boot timeout) -> Web 进程在启动后 60 秒内未能绑定到 $PORT:如果应用程序在启动后 60 秒内无法启动,则认为它已崩溃。
李>请注意,第一个问题会影响第二个问题。我的(当前)结论:Heroku 免费帐户与 JHipster 不兼容:S
我会尝试 Amazon Elastic Beanstalk。您是否推荐了其他替代方案?
【讨论】:
我已经成功地将应用程序部署到 Heroku (https://smallgis.herokuapp.com/#/login),您应该在 Heroku 中创建一个应用程序并安装 mlab 插件(在我的情况下为 mongodb),您应该始终保持 slug 大小小于 300 MB。将您的项目链接到您创建的 heroku 应用程序。
heroku 登录
创建一个新的 Git 存储库
在新目录或现有目录中初始化 git 存储库
部署您的应用
【讨论】: