【问题标题】:Deploying a JHipster Application to Heroku将 JHipster 应用程序部署到 Heroku
【发布时间】:2017-03-30 04:49:38
【问题描述】:

有没有人幸运地将 JHipster 应用程序部署到 Heroku?我认为需要自定义 buildpack,但我不是 100% 确定,因为我是 Heroku 的新手。

【问题讨论】:

  • 在 Heroku 上周更新我的数据库之前,它一直在工作。现在不行了。

标签: heroku jhipster


【解决方案1】:

我已经使用您的 cmets 为 JHipster 启动了 Heroku 子生成器:

https://github.com/jhipster/generator-jhipster/tree/master/heroku

我已经让它工作了,我只需要在它正式发布之前进行一些调整。

关于内存和启动超时问题,我都可以正常工作。

【讨论】:

  • 给定一个使用 jhipster 1.0 生成的应用程序,我该如何使用 github.com/jhipster/generator-jhipster/tree/master/heroku ?我尝试了 yo jhipster:heroku 但它没有添加任何新内容,所以我想我忘记下载或更新某些内容了。
  • 我刚开始,还没有发布。您需要使用 Git 存储库中的开发版本。
  • 好的,所以我应该克隆 github.com/jhipster/generator-jhipster 并以某种方式编译它,以便用来自 github 的开发版本替换我的 jhipster 生成器。我在哪里可以找到有关如何编译它的文档?我看到了 java 1.8 的 system.properties,需要吗?
【解决方案2】:

我在尝试部署到 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 统计数据:

【讨论】:

  • 我是 JHipster 的首席开发人员:我不知道这个 .slugignore 文件,你能创建一个工单并给我们你的配置吗?我想要一个 heroku 子生成器
  • 关于蛞蝓的详细信息在这里:devcenter.heroku.com/articles/slug-compiler。听起来最好的方法是下面提到的@jbaris,您使用自定义构建包,从github.com/heroku/heroku-buildpack-java 分叉。 jhipster-heroku 子生成器可能包含 procfile、system.properties 和 .slugignore,但用户仍需要创建一个指定自定义 buildpack 的应用程序。
【解决方案3】:

@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,有两个新问题:

  1. 错误 R14(超出内存配额):免费帐户有 512 MB 的 RAM:这会导致 dynos 交换和性能损失。考虑一下默认的 JHipster 应用程序需要大约 800 MB 的 RAM。

  2. Error R10 (Boot timeout) -> Web 进程在启动后 60 秒内未能绑定到 $PORT:如果应用程序在启动后 60 秒内无法启动,则认为它已崩溃。

    李>

请注意,第一个问题会影响第二个问题。我的(当前)结论:Heroku 免费帐户与 JHipster 不兼容:S

我会尝试 Amazon Elastic Beanstalk。您是否推荐了其他替代方案?

【讨论】:

  • 我在连接到 Amazon RDS PostgreSQL 数据源的同时成功地将股票 jhipster 应用程序部署到 Elastic Beanstalk 上的 t1.micro(最小)实例。此实例有资格获得免费套餐(1 年)并为您提供 1GB 内存。我必须做的唯一配置更改是增加 JVM Heap + PermGen 空间。
【解决方案4】:

我已经成功地将应用程序部署到 Heroku (https://smallgis.herokuapp.com/#/login),您应该在 Heroku 中创建一个应用程序并安装 mlab 插件(在我的情况下为 mongodb),您应该始终保持 slug 大小小于 300 MB。将您的项目链接到您创建的 heroku 应用程序。

heroku 登录

创建一个新的 Git 存储库

在新目录或现有目录中初始化 git 存储库

  • cd my-project/
  • git 初始化
  • heroku git:remote -a appname

部署您的应用

  • git 添加。
  • git commit -m "更改..."
  • git push heroku master(它构建和压缩所有应用程序和你 可以在默认的 heroku 应用程序 url 中可视化)

【讨论】:

    猜你喜欢
    • 2015-09-09
    • 2017-01-26
    • 2018-07-26
    • 2012-07-16
    • 2021-04-13
    • 2012-11-22
    • 2015-12-25
    • 2015-02-27
    相关资源
    最近更新 更多