2014-03-26 6 views
10

Hat jemand Glück gehabt, eine JHipster-Anwendung auf Heroku zu implementieren? Ich denke, ein spezielles Buildpack ist erforderlich, aber ich bin mir nicht 100% sicher, da ich neu bei Heroku bin.Eine JHipster-Anwendung auf Heroku implementieren

+0

hatte ich es Arbeit bis Heroku letzte Woche meine Datenbank aktualisiert hat. Jetzt funktioniert es nicht. –

Antwort

4

Ich habe zwei Probleme bei der Bereitstellung auf Heroku.

Das erste Problem, Heroku erkennt meine Anwendung als Node.js, da die package.json Datei im Stammverzeichnis befindet. Okay, einfache Lösung, da Sie einfach eine .slugignore Datei erstellen und die package.json ignorieren. Jetzt erkennt es die pom.xml und baut.

Zweites Problem, die Slug-Größe des Standard-jhipster ist etwa 340 MB. Der 'Slug' ist im Grunde genommen die Größe aller Abhängigkeiten, die beim Erstellen der Anwendung übernommen werden. Max Slug Größe erlaubt von Heroku ist 300MB. Anstatt zu versuchen, Abhängigkeiten zu sortieren und die Funktionalität zu entfernen, bin ich auf Amazon Elastic Beanstalk umgestiegen. Anstatt dann auf Amazon-Servern aufzubauen, stellen Sie die komprimierte .war-Datei auf einem Tomcat-env bereit, und das funktioniert einwandfrei.

Ich wäre interessiert zu wissen, ob jemand mehr Glück als ich mit Heroku hat, aber obwohl ich teilen würde, was ich gefunden habe.

aktualisiert

ich das Lager jhipster App auf eine t1.micro (kleinste) Instanz auf Elastic Beanstalk erfolgreich im Einsatz, während PostgreSQL Datenquelle zu einer Amazon RDS zu verbinden. Diese Instanz qualifiziert für die kostenlose Stufe (1 Jahr) und gibt Ihnen 1 GB Speicher. Die einzige Konfigurationsänderung, die ich vornehmen musste, war, den Speicherbereich JVM Heap + PermGen auf 512 MB bzw. 128 MB hochzufahren. Es war so einfach wie das Ausführen von "mvn package -PProd" und dann die Übernahme von "app_name.war.original" (ohne Tomcat) und die Bereitstellung dieser Instanz auf dem Tomcat-Instanzserver.

Hier sind die JVM Statistiken von der Benutzeroberfläche, wenn bei so ziemlich ohne Last läuft: enter image description here

+0

Ich bin der JHipster Hauptentwickler: Ich wusste nichts über diese .slugignore Datei, kannst du ein Ticket erstellen und uns deine Konfiguration geben? Ich hätte gerne einen Heroku Sub-Generator –

+0

Die Details auf der Schnecke sind hier: https://devcenter.heroku.com/articles/slug-compiler. Klingt wie der beste Ansatz wäre, was @jbaris unten erwähnt, wo Sie ein benutzerdefiniertes Build-Paket verwenden, gespalten von https://github.com/heroku/heroku-buildpack-java. Der jhipster-heroku-Subgenerator kann eine procfile, system.properties und .slugignore enthalten, aber der Benutzer muss immer noch eine App erstellen, die das benutzerdefinierte Buildpack angibt. – CMikeB1

3

Die beiden Probleme, die @ CMikeB1 können mithilfe einer benutzerdefinierten buildpack gelöst erwähnt werden. Es gibt eine Verzweigung, die java und node verbindet: https://github.com/lordviktor/heroku-buildpack-java-node-yeoman-submodule. Ich habe dies gegabelt, um das .m2-Verzeichnis zu entfernen und de slug size https://github.com/jbaris/heroku-buildpack-java-node-yeoman-submodule zu reduzieren.

Buuut gibt es zwei neue Probleme:

  1. Fehler R14 (Speicherkontingent überschritten): das freie Konto verfügt über 512 MB RAM: dies verursacht dynos Swapping und Verlustleistung. Berücksichtigen Sie, dass die Standard-JHipster-App etwa 800 MB RAM benötigt.

  2. Fehler R10 (Boot Timeout) -> Der Webprozess konnte nicht innerhalb von 60 Sekunden nach dem Start an $ PORT gebunden werden: Wenn die App nicht innerhalb von 60 Sekunden nach dem Start aufstarten kann, stürzt sie ab.

Beachten Sie, dass das erste Problem die zweite betrifft. Meine (aktuelle) Schlussfolgerung: Heroku kostenloses Konto ist nicht kompatibel mit JHipster: S

Ich werde Amazon Elastic Beanstalk versuchen. Hast du eine andere Alternative empfohlen?

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

ich schon daran zu arbeiten, ich brauche nur etwas Stimmung, bevor es wird offiziell:

+1

Ich habe die stock jhipster-App erfolgreich auf eine (kleinste) t1.micro-Instanz auf Elastic Beanstalk bereitgestellt, während ich eine Verbindung zu einer Amazon RDS PostgreSQL-Datenquelle hergestellt habe. Diese Instanz qualifiziert für die kostenlose Stufe (1 Jahr) und gibt Ihnen 1 GB Speicher. Die einzige Konfigurationsänderung, die ich vornehmen musste, war das Aufpumpen des JVM Heap + PermGen Space. – CMikeB1

4

Ich habe einen Heroku Teilgenerator für JHipster, indem Sie Ihre Kommentare gestartet.

In Bezug auf Speicher und Boot-Timeout-Probleme, habe ich beide funktioniert OK.

+0

Wie kann ich eine Anwendung verwenden, die mit Hilfe von jhipster 1.0 erstellt wurde: https://github.com/jhipster/generator-jhipster/tree/master/heroku? Ich habe versucht yo jhipster: heroku, aber es fügt nichts Neues hinzu, also denke ich, dass ich den Download vergessen oder etwas aktualisiert habe. – ilopezluna

+0

Ich habe gerade angefangen, es ist noch nicht veröffentlicht. Sie müssen die Entwicklungsversion aus dem Git-Repository verwenden. –

+0

Ok, also sollte ich https://github.com/jhipster/generator-jhipster klonen und irgendwie kompilieren, um meinen jhipster-Generator durch die Entwicklungsversion von github zu ersetzen. Wo finde ich Dokumente darüber, wie man es kompiliert? Ich sah system.properties mit Java 1.8, wird benötigt? – ilopezluna

0

Ich habe eine App erfolgreich auf Heroku bereitgestellt (https://smallgis.herokuapp.com/#/login), Sie sollten eine App in Heroku erstellen und installieren Sie die mlab Add-on (mongodb in meinem Fall), sollten Sie immer die Slug-Größe weniger von 300 MB. Verknüpfen Sie Ihr Projekt mit der heroku App, die Sie erstellt haben.

Heroku Login

Erstellen Sie ein neues Git-Repository

initialisieren ein Git-Repository in ein neues oder bestehendes Verzeichnis

  • cd my-Projekt/
  • git init
  • Heroku git : remote -a Anwendungsname

Stellen Sie Ihre App bereit

  • git add.
  • git -m "Änderungen ...." begehen
  • git push Heroku Master (Es baut und komprimiert alle die App und Sie konnte in der Default-Heroku Anwendungs-URL visualisieren)