L'application créée par SpringBoot fonctionnait comme prévu dans l'environnement local, et je prenais une pause pour la télécharger dans l'environnement de production et simplement la publier, mais j'en étais accro deux fois plus que je l'imaginais ...
Maintenant que nous l'avons finalement publié, jetons un coup d'œil à ce que nous avons fait pour le publier sur Heroku.
J'espère que cet article sera utile à toute personne autre que moi qui a des difficultés à se déployer avec Heroku.
OS: macOS Catalina 10.15.6 JDK:14.0.1 Spring Boot 2.3.3 jquery 3.3.1-1 bootstrap 4.2.1 maven eclipse
L'auteur a créé une application CRUD avec Spring MVC en se référant à "[Introduction à ne pas regretter] Spring demantling new book". Les principales fonctions implémentées dans l'application sont les suivantes.
・ Connexion / déconnexion ・ Inscription / retrait d'un nouveau membre ・ Mettre à jour les informations d'enregistrement ・ Recherche de contenu Créer des écrans à l'aide de thymeleaf pour le moteur de modèle et Bootstrap pour le framework CSS
Je ne parlerai pas du contrôleur créé et du fichier html dans cet article. Vous êtes peut-être tombé sur le déploiement sur Heroku et vous vous demandez si vous devez le recréer à partir de zéro, mais ce n'est pas nécessaire.
Veuillez vous référer à l'article ci-dessous pour vous inscrire en tant que membre d'Heroku. https://blog.cloud-acct.com/posts/u-heroku-deploy-intro/
↓ Vous pouvez vous inscrire en tant que membre ci-dessous. https://signup.heroku.com/login
Ensuite, installez la CLI Heroku. Assurez-vous de l'installer car il sera déployé par opération de terminal. Ce qui suit est pour mac.
brew tap heroku/brew && brew install heroku
Après l'installation, veuillez vérifier la version pour confirmation.
$ heroku --version
heroku/7.46.2 darwin-x64 node-v12.16.2
Créez un fichier appelé Procfile qui définit la commande à exécuter sur Heroku sous le répertoire racine. Sans cela, lors du déploiement sur Heroku, il est dit "code = H14 desc =" Aucun processus Web en cours d'exécution "" Une erreur s'est produite et l'application ne peut pas être exécutée.
Dans Procfile, "P" est une majuscule et aucune extension n'est ajoutée.
L'auteur a cloné l'exemple de projet Java d'heroku avec la commande suivante, J'ai réécrit le contenu dans le répertoire racine et l'ai utilisé.
git clone https://github.com/heroku/java-getting-started.git
Procfile est ce fichier dans la figure ci-dessous.
Exemple «exemple de projet heroku Java»
Écrivez le contenu du Procfile comme indiqué ci-dessous
web: java -Dserver.port=$PORT -jar target/Chaîne de caractères arbitraire-0.0.1-SNAPSHOT.jar
Je vais expliquer dans l'ordre à partir de la gauche.
Partie 1 "Web" Il s'agit d'un type de processus appelé "Web". L'application Heroku exécute plusieurs machines virtuelles de «différentes manières», Le "type de processus" spécifie comment déplacer cela. Le Procfile décrit les paramètres du type de processus ligne par ligne. Décrivez le nom du type de processus, insérez:, puis décrivez la commande pour définir chaque type de processus.
Assurez-vous de définir le type de processus "Web". S'il n'est pas défini, la machine virtuelle ne traitera pas les requêtes HTTP.
Partie 2 "java" Comme j'ai oublié, le côté droit de "web:" est la commande "java -jar 〇〇.jar" lors de l'exécution d'un fichier jar avec java.
Référence: https://teratail.com/questions/91621
Partie 3 "-D"
Selon le document officiel "45. Heroku" Rendre l'argument SpringBoot "-D" disponible en tant que propriété accessible à partir de l'instance Spring Environment
Il semble y avoir un sens ...
Partie 4 "server.port = $ PORT" Définition du port HTTP du serveur. $ PORT contient les variables d'environnement assignées par Heroku PaaS.
Partie 5 "-jar target / chaîne de caractères arbitraires -0.0.1-SNAPSHOT.jar" Comme je l'expliquerai plus tard, lorsque vous effectuez une construction de déplacement, "une chaîne de caractères arbitraire -0.0.1-SNAPSHOT.jar" est créée dans le dossier "cible" directement sous le répertoire racine. "Chaîne de caractères cible / arbitraire -0.0.1-SNAPSHOT.jar" est "chaîne de caractères arbitraire -0.0.1-SNAPSHOT.jar dans le dossier" cible "", n'est-ce pas?
En ce qui concerne le nom du fichier jar, cela s'applique aux informations contenues dans la balise de version et la balise artifactId de pom.xml. La "chaîne de caractères arbitraires" ci-dessus est la chaîne de caractères décrite dans la balise artifactId.
Dans l'exemple ci-dessous, "hoge-0.0.1-SNAPSHOT.jar" est créé. Lors de la création du contenu dans Procfile, veuillez décrire la chaîne de caractères dans la balise artifactId dans n'importe quelle chaîne de caractères.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<!--Les informations des deux dernières lignes sont reflétées comme le nom du fichier-->
<artifactId>hoge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hoge</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>14</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
</dependency>
Ensuite, créez "system.properties" comme indiqué ci-dessous.
Ce fichier spécifie la version java. Puisque l'auteur utilise JDK 14.0.1, il est décrit comme 14. Veuillez le réécrire en fonction de votre version.
system.properties
java.runtime.version=14
Stocker directement sous les répertoires racine "Procfile" et "system.properties".
root/
├system.properties
├Procfile
├mvnw
├mvnw.cmd
├pom.xml
├target/
├src/
├docs/
└README.md
référence Document officiel (anglais): https://docs.spring.io/spring-boot/docs/0.0.10.BUILD-SNAPSHOT/reference/htmlsingle/ Document officiel (japonais) "2.3. Heroku": https://spring.pleiades.io/spring-boot/docs/current/reference/html/deployment.html
À propos du profil: https://creepfablic.site/2019/06/15/heroku-procfile-matome/ À propos du "web": http://info-i.net/heroku-ps
Ajoutez "webapp-runner" à pom.xml.
Webapp Runner est une application de lancement qui lance Tomcat en interne. Il est nécessaire pour exécuter l'application sur Heroku.
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.heroku</groupId>
<artifactId>webapp-runner</artifactId>
<version>9.0.30.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Ajoutez "maven-compiler-plugin" à pom.xml. Dans mon environnement, si je n'ai pas ajouté cela, le code d'erreur suivant a été généré sur la console Heroku au moment du déploiement.
Cela semble être une erreur qui se produit lorsque maven essaie de s'exécuter sur une version plus ancienne de Java que la version JDK du projet spécifié par "maven-compiler-plugin". Il existe une incompatibilité de version.
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project app: Fatal error compiling: invalid target release: 11 -> [Help 1]
source et cible sont des options de compilation, mais dans cette balise, vous spécifiez la version de jdk.
À propos, "source" spécifie la version du code source à accepter, et "cible" spécifie la version jdk du fichier de classe créé lorsque la compilation est terminée. J'ai mis «source» et «cible» sur «1,8».
Lorsque j'ai essayé de le régler sur "14", les erreurs ont continué et je n'ai pas trouvé de solution ... Si vous le réglez sur "1.8", cela fonctionne sans aucun problème pour une raison quelconque, et il y a de la place pour une enquête plus approfondie.
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
Voici un résumé des dépendances ajoutées.
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.heroku</groupId>
<artifactId>webapp-runner</artifactId>
<version>9.0.30.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
N'oubliez pas de mettre à jour le projet.
référence À propos de "Web app Runner": https://codezine.jp/article/detail/8187 Version "Webapp Runner": https://mvnrepository.com/artifact/com.heroku/webapp-runner À propos de "Webapp Runner" (document officiel): https://devcenter.heroku.com/articles/java-webapp-runner À propos de "Impossible d'exécuter l'objectif org.apache.maven.plugins: maven-compiler-plugin": https://python5.com/q/laifarhi À propos de «Erreur fatale lors de la compilation: version cible non valide: x.x»: https://qiita.com/gishi_yama/items/67e4c12ae90ad34e652b À propos de «L'option source X n'est actuellement pas prise en charge»: https://qiita.com/opengl-8080/items/bb32732f9aa5cb3495d2 À propos de "cible" et "source": http://dodododo.jp/java/javase_6_docs_ja/technotes/tools/solaris/javac.html
Déployez l'application créée par Spring Boot sur Heroku (public) Continuez vers ② ... ↓ ② https://qiita.com/hiroki1994/items/72a52f2139c1088c623b
Recommended Posts