Quatre choses sur lesquelles les débutants Heroku sont tombés lors du déploiement d'applications Web créées en Java avec GitHub

Déclenchement J'avais ma propre application web sur GitHub, "Je veux le publier dans un état mobile!" C'est la raison pour laquelle j'ai commencé à ressentir cela.

Divers googles "On dirait que Heroku peut être utilisé." J'ai découvert cela, alors j'ai décidé de le déployer après avoir étudié.

La source: https://github.com/ShandyGaffLover/sample001

Prémisse ・ Heroku pour la première fois ・ Java, Git, Maven sont expérimentés ・ Création d'un compte GitHub

Ce que j'ai fait Créer un compte Heroku ⇒ Intégration GitHub J'ai pu le faire de manière relativement fluide tout en Google.

Les articles auxquels j'ai fait référence sont les suivants: J'ai essayé Heroku, qui peut publier gratuitement des applications Web - Qiita https://qiita.com/fkooo/items/0365b50d4534a236dcb2

Note d'utilisation Heroku (Java) -Qiita https://qiita.com/opengl-8080/items/9dc9243c4e68cd0674f8

Trébucher

① "Je ne connais pas la langue de l'application" et elle ne se compile pas

Phénomène Après avoir sélectionné le référentiel à lier et la branche à déployer, lorsque le bouton "Déployer la branche" a été appuyé, "Aucune langue par défaut n'a pu être détectée pour cette application." S'affiche.

builderror.png

Cause Parce que Buildpack n'est pas défini.

Correspondance Cliquez sur "Ajouter un pack de construction" au bas de la page de l'onglet "Paramètres", et sélectionnez "heroku / java" pour l'ajouter.

Résultat Lorsque j'ai à nouveau appuyé sur le bouton «Deploy Branch», l'erreur de construction s'est produite comme indiqué ci-dessous.

wherepomis.png

② "pom.xml not found" est dit et il n'est pas construit

Phénomène Après avoir répondu à ①, lorsque le bouton «Déployer la branche» a été de nouveau appuyé, «Impossible de trouver un fichier pom.xml! Veuillez vérifier qu'il existe et est validé dans Git.» S'affiche.

Cause Parce que pom.xml n'existe pas directement sous le référentiel.

Depuis que je créais initialement le projet sample001 sous le référentiel de formation, pom.xml était à l'emplacement training / sample001 / pom.xml. Apparemment, vous ne pouvez pas vous déployer sur Heroku à cet endroit.

  • Il y avait un exemple similaire. Heroku: Je suis accro à l'erreur Buildpack-Qiita https://qiita.com/arekore0/items/eae550bdbcc78eeac082

Correspondance Un nouvel exemple de référentiel001 a été créé, pom.xml a été placé directement sous celui-ci et la source a été déplacée.

Résultat Lorsque j'ai à nouveau appuyé sur le bouton «Deploy Branch», la construction a réussi comme indiqué ci-dessous. Tu l'as fait!

buildsuccess.png

J'ai pensé ... pendant un moment

apperror.png

Lorsque j'accède à l'URL, j'obtiens une erreur d'application ...

③ Le processus Web n'est pas en cours d'exécution après le déploiement

Phénomène Une fois le déploiement réussi, cliquez sur le bouton "Afficher" pour accéder à l'URL de l'application, et un écran indiquant une erreur d'application s'affichera. Si vous vous référez au journal, il s'affichera comme suit.
2018-12-06T07:09:36.166348+00:00 heroku[router]: at=error code=H14 desc="No web processes running" 

Cause L'application Web ne s'exécute pas sans la création du fichier Procfile. [^ 1] [^ 1]: Je ne sais pas si ce japonais est techniquement correct. Quiconque connaît la relation entre Procfile et les actifs déployés apprécierait si vous pouviez signaler des erreurs.

Correspondance Reportez-vous à ce qui suit, (1) créez un fichier Procfile et (2) ajoutez webapp-runner au plugin de pom.xml. Deploying Tomcat-based Java Web Applications with Webapp Runner | Heroku Dev Center https://devcenter.heroku.com/articles/java-webapp-runner#deploy-your-application-to-heroku

Résultat ![apperror.png](https://qiita-image-store.s3.amazonaws.com/0/322008/7147b541-4dc2-9820-d0fb-7ef3eddaf975.png)

L'erreur d'application est toujours affichée. Ouais pourquoi ...

④ "war file does not exist" s'affiche dans le journal

Phénomène Après avoir répondu à (3), si le déploiement est réussi et que le bouton «Afficher» est enfoncé pour accéder à l'URL de l'application, un écran notifiant une erreur d'application s'affiche. Si vous vous référez au journal, il s'affichera comme suit.
2018-12-06T10:51:25.163976+00:00 app[web.1]: The specified path "target/*.war" does not exist.

J'étais confus parce que je ne connaissais pas la cause au début [^ 2], mais dans la plupart des cas, la cause est souvent mauvaise.

Cause Parce que l'empaquetage de pom.xml n'a pas été décrit.

Correspondance Spécifiez "war" pour l'empaquetage dans pom.xml.

Résultat Déploiement réussi!

Résumé Les points suivants doivent être pris en compte lors de la première utilisation d'Heroku. (1) Les paramètres de Buildpack sont requis. (2) Pour Java, il est nécessaire de placer pom.xml directement sous le référentiel. ③Procfile est requis.

Je ne savais pas que j'avais oublié de spécifier "war" pour dans pom.xml. Je suis désolé. [^ 2] [^ 2]: Pourquoi cela a-t-il fonctionné avec le Tomcat local?

Recommended Posts

Quatre choses sur lesquelles les débutants Heroku sont tombés lors du déploiement d'applications Web créées en Java avec GitHub
Déployer des applications Web Java sur Heroku
[Java] Déployer une application Web créée avec Eclipse + Maven + Ontology avec Heroku
Ce que vous utilisez souvent lorsque vous faites du développement Web avec Java
J'ai créé un PDF avec Java.
La première chose à faire lorsque vous voulez être satisfait d'Heroku sur GitHub avec Eclipse sur Java
Lors de la recherche de plusieurs dans un tableau Java
Créer une application TODO dans Java 7 Créer un en-tête
Créons une application de calcul avec Java
Diviser une chaîne avec ". (Dot)" en Java
Essayer avec la déclaration de ressources dans l'application Web
Lire une chaîne dans un fichier PDF avec Java
Créer un CSR avec des informations étendues en Java
Déployez des applications Web Java sur Azure avec maven
Comment afficher une page Web en Java
Une note quand vous voulez Tuple en Java
Créons un framework Web ultra-simple avec Java
Créons une application TODO en Java 11 Gestion des exceptions lors de l'accès à un TODO avec un ID inexistant