Die von SpringBoot erstellte Anwendung funktionierte wie erwartet in der lokalen Umgebung, und danach machte ich nur eine Pause, um sie in die Produktionsumgebung hochzuladen und zu veröffentlichen, aber ich war doppelt so süchtig danach, wie ich es mir vorgestellt hatte ...
Nachdem wir es endlich veröffentlicht haben, schauen wir uns an, was wir getan haben, um es in Heroku zu veröffentlichen.
Ich hoffe, dieser Artikel ist hilfreich für alle anderen als mich, die Probleme bei der Bereitstellung mit Heroku haben.
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
Der Autor erstellte eine CRUD-Anwendung mit Spring MVC unter Bezugnahme auf "[Einführung, um es nicht zu bereuen] Spring zerlegt ein neues Buch". Die in der Anwendung implementierten Hauptfunktionen sind wie folgt.
· Einloggen Ausloggen ・ Registrierung / Rückzug neuer Mitglieder ・ Registrierungsinformationen aktualisieren ・ Inhaltssuche Erstellen Sie Bildschirme mit thymeleaf for Template Engine und Bootstrap for CSS Framework
Ich werde den erstellten Controller und die HTML-Datei in diesem Artikel nicht berühren. Möglicherweise stolpern Sie über die Bereitstellung in Heroku und fragen sich, ob Sie es von Grund auf neu erstellen müssen, aber das ist nicht erforderlich.
Bitte lesen Sie den folgenden Artikel, um sich als Mitglied von Heroku zu registrieren. https://blog.cloud-acct.com/posts/u-heroku-deploy-intro/
↓ Sie können sich unten als Mitglied registrieren. https://signup.heroku.com/login
Installieren Sie dann die Heroku-CLI. Stellen Sie sicher, dass Sie es installieren, da es vom Terminalbetrieb bereitgestellt wird. Das Folgende ist für Mac.
brew tap heroku/brew && brew install heroku
Bitte überprüfen Sie nach der Installation die Version zur Bestätigung.
$ heroku --version
heroku/7.46.2 darwin-x64 node-v12.16.2
Erstellen Sie eine Datei namens Procfile, die den Befehl definiert, der auf Heroku im Stammverzeichnis ausgeführt werden soll. Ohne dies wird bei der Bereitstellung in Heroku "code = H14 desc =" Keine Webprozesse ausgeführt "" angezeigt. Ein Fehler ist aufgetreten und die Anwendung kann nicht ausgeführt werden.
In Procfile ist "P" ein Großbuchstabe und es wird keine Erweiterung hinzugefügt.
Der Autor hat Herokus Java-Beispielprojekt mit dem folgenden Befehl geklont: Ich habe den Inhalt im Stammverzeichnis umgeschrieben und verwendet.
git clone https://github.com/heroku/java-getting-started.git
Procfile ist diese Datei in der folgenden Abbildung. Beispiel "Heroku Java Beispielprojekt"
Schreiben Sie den Inhalt des Procfile wie unten gezeigt
web: java -Dserver.port=$PORT -jar target/Beliebige Zeichenfolge-0.0.1-SNAPSHOT.jar
Ich werde in der Reihenfolge von links erklären.
Teil 1 "Web" Dies ist ein Prozesstyp namens "Web". Die Heroku-Anwendung führt mehrere virtuelle Maschinen auf "unterschiedliche Weise" aus. Der "Prozesstyp" gibt an, wie dies verschoben werden soll. Das Procfile beschreibt die Einstellungen für den Prozesstyp zeilenweise. Beschreiben Sie den Namen des Prozesstyps, fügen Sie: ein und beschreiben Sie dann den Befehl zum Festlegen der einzelnen Prozesstypen.
Stellen Sie sicher, dass Sie den Prozesstyp "Web" einstellen. Wenn nicht festgelegt, verarbeitet die virtuelle Maschine keine HTTP-Anforderungen.
Teil 2 "Java" Wie ich vergessen habe, ist die rechte Seite von "web:" der Befehl "java -jar 〇〇.jar", wenn eine JAR-Datei mit Java ausgeführt wird.
Referenz: https://teratail.com/questions/91621
Teil 3 "-D"
Nach dem offiziellen Dokument "45. Heroku" Stellen Sie das SpringBoot-Argument "-D" als Eigenschaft zur Verfügung, auf die über die Spring Environment-Instanz zugegriffen werden kann
Es scheint eine Bedeutung zu geben ...
Teil 4 "server.port = $ PORT" Festlegen des Server-HTTP-Ports. $ PORT enthält die von Heroku PaaS zugewiesenen Umgebungsvariablen.
Teil 5 "-jar Ziel / beliebige Zeichenfolge -0.0.1-SNAPSHOT.jar" Wie ich später erläutern werde, wird beim Erstellen eines Umzugs "beliebige Zeichenfolge -0.0.1-SNAPSHOT.jar" im Ordner "target" direkt unter dem Stammverzeichnis erstellt. "Ziel- / beliebige Zeichenfolge -0.0.1-SNAPSHOT.jar" ist "beliebige Zeichenfolge -0.0.1-SNAPSHOT.jar im Ordner" Ziel "", nicht wahr?
Der Name der JAR-Datei gilt für die Informationen, die im Versions-Tag und im Artefakt-ID-Tag von pom.xml enthalten sind. Die obige "beliebige Zeichenfolge" ist die im Artefakt-ID-Tag beschriebene Zeichenfolge.
Im folgenden Beispiel wird "hoge-0.0.1-SNAPSHOT.jar" erstellt. Beschreiben Sie beim Erstellen des Inhalts in Procfile die Zeichenfolge im Tag arifactId in einer beliebigen Zeichenfolge.
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>
<!--Die Informationen in den unteren beiden Zeilen werden als Dateiname wiedergegeben-->
<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>
Erstellen Sie als Nächstes "system.properties" wie unten gezeigt.
Diese Datei gibt die Java-Version an. Da der Autor JDK 14.0.1 verwendet, wird es als 14 beschrieben. Bitte schreiben Sie es entsprechend Ihrer Version um.
system.properties
java.runtime.version=14
Speichern Sie direkt unter den Stammverzeichnissen "Procfile" und "system.properties".
root/
├system.properties
├Procfile
├mvnw
├mvnw.cmd
├pom.xml
├target/
├src/
├docs/
└README.md
Referenz Offizielles Dokument (Englisch): https://docs.spring.io/spring-boot/docs/0.0.10.BUILD-SNAPSHOT/reference/htmlsingle/ Offizielles Dokument (Japanisch) "2.3. Heroku": https://spring.pleiades.io/spring-boot/docs/current/reference/html/deployment.html
Über das Profil: https://creepfablic.site/2019/06/15/heroku-procfile-matome/ Über "Web": http://info-i.net/heroku-ps
Fügen Sie "webapp-running" zu pom.xml hinzu.
Webapp Runner ist eine Launcher-Anwendung, die Tomcat intern startet. Es ist erforderlich, die Anwendung auf Heroku auszuführen.
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>
Fügen Sie "maven-compiler-plugin" zu pom.xml hinzu. Wenn ich dies in meiner Umgebung nicht hinzugefügt habe, wurde zum Zeitpunkt der Bereitstellung der folgende Fehlercode an die Heroku-Konsole ausgegeben.
Dies scheint ein Fehler zu sein, der auftritt, wenn maven versucht, auf einer älteren Java-Version als der JDK-Version des vom "maven-compiler-plugin" angegebenen Projekts auszuführen. Es liegt eine Versionsinkongruenz vor.
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]
Quelle und Ziel sind Optionen zur Kompilierungszeit, aber innerhalb dieses Tags geben Sie die Version von jdk an.
Übrigens gibt "source" die Version des zu akzeptierenden Quellcodes an, und "target" gibt die JDK-Version der Klassendatei an, die nach Abschluss der Kompilierung erstellt wird. Ich setze "Quelle" und "Ziel" auf "1.8".
Als ich versuchte, es auf "14" zu setzen, gingen die Fehler weiter und ich konnte keine Lösung finden ... Wenn Sie "1.8" einstellen, funktioniert es aus irgendeinem Grund problemlos und es besteht Raum für weitere Untersuchungen.
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>
Das Folgende ist eine Zusammenfassung der hinzugefügten Abhängigkeiten.
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>
Vergessen Sie nicht, das Projekt zu aktualisieren.
Referenz Informationen zu "Web App Runner": https://codezine.jp/article/detail/8187 Version "Webapp Runner": https://mvnrepository.com/artifact/com.heroku/webapp-runner Informationen zu "Webapp Runner" (offizielles Dokument): https://devcenter.heroku.com/articles/java-webapp-runner Über "Fehler beim Ausführen des Ziels org.apache.maven.plugins: maven-compiler-plugin": https://python5.com/q/laifarhi Informationen zu "Schwerwiegender Fehler beim Kompilieren: ungültige Zielversion: x.x": https://qiita.com/gishi_yama/items/67e4c12ae90ad34e652b Informationen zu "Quelloption X wird derzeit nicht unterstützt": https://qiita.com/opengl-8080/items/bb32732f9aa5cb3495d2 Über "Ziel" und "Quelle": http://dodododo.jp/java/javase_6_docs_ja/technotes/tools/solaris/javac.html
Stellen Sie die von Spring Boot erstellte Anwendung für Heroku bereit (öffentlich). Fahren Sie fort mit ... ↓ ② https://qiita.com/hiroki1994/items/72a52f2139c1088c623b
Recommended Posts