有没有人幸运地将一个JHipster应用程序部署到Heroku?我认为需要自定义buildpack,但我不是百分百肯定,因为我是Heroku的新手。
答案 0 :(得分:5)
尝试部署到Heroku时遇到了两个问题。
第一个问题,Heroku将我的应用程序检测为Node.js
,因为package.json
文件位于根目录中。好的,只需创建一个.slugignore
文件并忽略package.json
即可轻松解决。现在它识别出pom.xml
并构建。
第二个问题,默认jhipster的slug大小约为340mb。 'slug'基本上是应用程序构建时所引入的所有依赖项的大小。 Heroku允许的最大塞尺尺寸为300MB。而是尝试对依赖关系进行排序,并删除我使用 Amazon Elastic Beanstalk 切换到的功能。而不是在亚马逊的服务器上构建您将压缩的.war文件部署到Tomcat环境,这样可以正常工作。
我很想知道是否有人比 Heroku 有更多的运气,但我会分享我找到的东西。
<强>更新强>
我成功将stock jhipster应用程序部署到Elastic Beanstalk上的t1.micro(最小)实例,同时连接到Amazon RDS PostgreSQL数据源。此实例符合免费等级(1年)并为您提供1GB内存。我必须进行的唯一配置更改是将JVM Heap + PermGen空间分别提升到512MB和128MB。它就像运行“mvn package -Pprod”然后运行app_name.war.original(没有嵌入tomcat的那个)并将其部署到实例Tomcat服务器一样简单。
以下是在几乎没有负载的情况下运行时来自UI的JVM统计信息:
答案 1 :(得分:5)
我已经使用你的评论为JHipster创建了一个Heroku子生成器:
https://github.com/jhipster/generator-jhipster/tree/master/heroku
我已经有了它的工作,在成为官方之前我只需要进行一些调整。
关于内存和启动超时问题,我的工作正常。
答案 2 :(得分:3)
@ CMikeB1提到的两个问题可以通过使用自定义buildpack来解决。有一个连接java和节点的分支:https://github.com/lordviktor/heroku-buildpack-java-node-yeoman-submodule。我已经分叉了这个以删除.m2目录并减少de slug size https://github.com/jbaris/heroku-buildpack-java-node-yeoman-submodule。
Buuut,有两个新问题:
错误R14(超出内存配额):免费帐户有512 MB的RAM:这会导致dynos交换和丢失性能。考虑默认的JHipster应用程序需要大约800 MB的RAM。
错误R10(启动超时) - &gt; Web进程在启动后60秒内无法绑定到$ PORT:如果应用程序无法在启动后60秒内启动,则会被认为已崩溃。
请注意,第一个问题会影响第二个问题。我的(当前)结论:Heroku免费帐户与JHipster:S
不兼容我将尝试Amazon Elastic Beanstalk。你有其他选择吗?
答案 3 :(得分:0)
我已经成功地向Heroku部署了一个应用程序(https://smallgis.herokuapp.com/#/login),您应该在Heroku中创建一个应用程序并安装mlab add on(在我的情况下是mongodb),你应该总是保留那个小于300 MB的slug 。将您的项目链接到您创建的heroku应用程序。
heroku登录
创建一个新的Git存储库
在新目录或现有目录中初始化git存储库
部署您的应用