[JAVA] Stellen Sie die von Spring Boot erstellte Anwendung für Heroku (öffentlich) bereit ②

Das Bereitstellen (Veröffentlichen) der von Spring Boot für Heroku (1) erstellten Anwendung ist eine Fortsetzung.

④ Erstellen Sie eine App auf Heroku

Erstellen Sie eine App auf Heroku mit dem folgenden Befehl.

$ heroku create <App Name>

Wenn Sie die App ohne Namen ausführen, wird sie automatisch benannt. Wenn Sie möchten, dass der App-Name "myapp" lautet, lautet er "heroku create myapp".

Sie können es auch auf der Heroku-Site erstellen, ohne Befehle zu verwenden.

・ Wählen Sie "Neue App erstellen" unter "Neu" oben rechts auf der Website スクリーンショット 2020-10-29 16.46.29.png

・ Geben Sie den App-Namen ein und klicken Sie auf "App erstellen". Die Region kann derzeit nur aus Amerika oder Europa ausgewählt werden.

スクリーンショット 2020-10-29 16.47.01.png

⑤ Add-on Postgres und Daten hinzufügen

Heroku unterstützt H2 nicht. Wenn Sie H2 als DB-Verwaltungssystem verwenden, funktioniert Ihre Anwendung nicht ordnungsgemäß. Verwenden Sie Postgres anstelle von H2. Die offizielle Website von Heroku garantiert, dass Heroku und Postgres miteinander kompatibel sind, da Heroku Postgres seit vielen Jahren betreibt und das Know-how durch die Interaktion mit vielen Benutzern gepflegt wird.

Öffnen Sie zunächst die Seite der in (4) erstellten Anwendung und suchen Sie unter "Add-Ons" auf der Registerkarte "Ressourcen" nach "Heroku Postgres".

スクリーンショット 2020-10-30 12.51.04.png

Wenn Sie "Heroku Postgres" auswählen, wird ein Popup wie das folgende geöffnet. Drücken Sie auf "Bestellformular senden". スクリーンショット 2020-10-30 13.05.52.png

Da Sie die Datenbank durch Eingabe von Postgres-Befehlen im Terminal betreiben, installieren Sie postgresSQL auf dem Betriebssystem.

$ brew install postgresql

Bearbeiten Sie bash.profile und übergeben Sie den Pfad ebenfalls.

bash.profile


export PATH=/usr/local/Cellar/postgresql@12/12.4_1/bin:$PATH

Geben Sie den folgenden Befehl ein, um die DB-Verbindungsinformationen abzurufen.

$ heroku pg:credentials:url --app [APP-NAME]

Connection information for default credential.
Connection info string:
   "dbname=hogehogehoge host=hogehoge123.amazonaws.com port=5432 user=mrhoge password=hogehoge1964 sslmode=require"
Connection URL:
   postgres://USER-NAME:PASS@HOST:5432/DBNAME

Stellen Sie dann eine Verbindung zur Datenbank her.

$ heroku pg:psql -a [APP-NAME]
--> Connecting to postgresql-XXXXXX-XXXXXX
psql (10.6)
SSL-Verbindung(Protokoll: TLSv1.2, Verschlüsselungsmethode: ECDHE-RSA-AES256-GCM-SHA384, Bitlänge:256, Komprimierung:aus)
"help"Holen Sie sich Hilfe bei.
[APP-NAME]::DATABASE=>

Erstellen Sie eine Tabelle für Ihre Anwendung in der verbundenen Datenbank.

Beispiel:

[APP-NAME]::DATABASE=> CREATE TABLE IF NOT EXISTS food (
  foodID INT PRIMARY KEY,
  name VARCHAR(100),
  price VARCHAR(500),
  description VARCHAR(3000)
);

CREATE TABLE IF NOT EXISTS userData (
	userId VARCHAR(50) PRIMARY KEY,
	mailAddress VARCHAR(100),
	password VARCHAR(100),
	role VARCHAR(50)
);

Übrigens kann der Tabellenname aufgrund der Einschränkungen von postgresql nicht "Benutzer" sein. Geben wir ihm einen anderen Namen.

Wir werden der erstellten Tabelle Daten hinzufügen. Beispiel:

[APP-NAME]::DATABASE=> INSERT INTO food(foodID, name, price, description) VALUES
('1', 'Kuchen rollen', '1000 Yen', 'Kuchen rollen専門店で、手作りしている為、1日80本限定販売です。'),
('2', 'Erdbeerkuchen', '900 Yen', 'Erdbeerkuchen専門店で、手作りしている為、1日80本限定販売です。'),
('3', 'Schokoladenkuchen 3', '1000 Yen', 'Da es in einem Schokoladenkuchenfachgeschäft handgefertigt wird, ist es auf 80 Flaschen pro Tag begrenzt.'),
('4', 'Käsekuchen 4', '800 Yen', 'Da es in einem Käsekuchen-Fachgeschäft handgefertigt wird, ist es auf 80 Flaschen pro Tag begrenzt.'),
('5', 'Matcha-Kuchen 5', '1200 Yen', 'Da es in einem Matcha-Kuchen-Fachgeschäft handgefertigt wird, ist es auf 80 Flaschen pro Tag begrenzt.');

Wenn Sie mehrere Datensätze hinzufügen, wird empfohlen, die INSERT SQL-Anweisung wie oben beschrieben zu schreiben! Als ich es mit der folgenden SQL-Anweisung ausführte, konnte ich es nicht einfügen ... Beispiel:

INSERT INTO food(foodID, name, price, description) VALUES
('1', 'Kuchen rollen', '1000 Yen', 'Kuchen rollen専門店で、手作りしている為、1日80本限定販売です。');
INSERT INTO food(foodID, name, price, description) VALUES
('2', 'Erdbeerkuchen', '900 Yen', 'Erdbeerkuchen専門店で、手作りしている為、1日80本限定販売です。');
INSERT INTO food(foodID, name, price, description) VALUES
('3', 'Schokoladenkuchen 3', '1000 Yen', 'Da es in einem Schokoladenkuchenfachgeschäft handgefertigt wird, ist es auf 80 Flaschen pro Tag begrenzt.');
INSERT INTO food(foodID, name, price, description) VALUES
('4', 'Käsekuchen 4', '800 Yen', 'Da es in einem Käsekuchen-Fachgeschäft handgefertigt wird, ist es auf 80 Flaschen pro Tag begrenzt.');
INSERT INTO food(foodID, name, price, description) VALUES
('5', 'Matcha-Kuchen 5', '1200 Yen', 'Da es in einem Matcha-Kuchen-Fachgeschäft handgefertigt wird, ist es auf 80 Flaschen pro Tag begrenzt.');

Wenn die Daten erfolgreich hinzugefügt wurden, wird die Anzahl der Zeilen des hinzugefügten Datensatzes angezeigt. Beispiel: Fügen Sie 5 Datensatzzeilen hinzu

INSERT 0 5

Verwenden Sie den folgenden Befehl, um die Verbindung zur Datenbank zu trennen.

[APP-NAME]::DATABASE=> \q 

Referenz Informationen zur Installation von postgresSQL: https://qiita.com/yorokobi_kannsya/items/f77d074e382a88dae971 Verbindungsinformationen abrufen und eine Verbindung zur Datenbank herstellen: https://sysrigar.com/2019/01/20/heroku-postgres%E3%82%92%E3%83%AD%E3%83%BC%E3%82 % AB% E3% 83% AB% E7% 92% B0% E5% A2% 83% E3% 81% 8B% E3% 82% 89% E6% 89% 8B% E5% 8B% 95% E3% 81% A7 % E6% 93% 8D% E4% BD% 9C% E3% 81% 99% E3% 82% 8B% E6% 96% B9% E6% B3% 95% E3% 81% AB% E3% 81% A4 / Was tun, wenn "heroku pg: psql -a [appname]" nicht funktioniert: https://qiita.com/Puerto/items/5b886d0ed202761c4cc1

⑥ Fügen Sie "postgresql" zu pom.xml hinzu

Fügen Sie "postgresql" zu pom.xml hinzu.

pom.xml


<dependency>
	<groupId>org.postgresql</groupId>
	<artifactId>postgresql</artifactId>
	<scope>runtime</scope>
</dependency>

⑦ Legen Sie Umgebungsvariablen für Postgres fest

Öffnen Sie die Heroku-Anwendungsseite und klicken Sie auf "Heroku Postgres". スクリーンショット 2020-10-30 14.47.32.png

Klicken Sie unter Einstellungen auf Anmeldeinformationen anzeigen. スクリーンショット 2020-10-30 14.48.25.png

Herokus Postgresql-Einstellungen werden in einer Liste angezeigt. Kopieren Sie sie und fügen Sie sie in ein Memo ein. Im Bild ist es "AAA" und "BBB", aber da es keine Informationen sind, die offengelegt werden sollten, wird der Text später eingefügt.

スクリーンショット 2020-10-30 14.57.24.png

Kehren Sie zur Heroku-Anwendungsseite zurück und legen Sie die Einstellungen, die Sie zuvor unter "Config Vars" auf der Registerkarte "Settings" überprüft haben, als Umgebungsvariablen fest. スクリーンショット 2020-10-30 15.03.48.png

Sie können eine Umgebungsvariable hinzufügen, indem Sie den Variablennamen in "KEY" und den Wert in "VALUE" eingeben und auf "Add" klicken. Variablennamen unterscheiden sich häufig von denen unter "Anmeldeinformationen anzeigen".

Fügen Sie unter "Anmeldeinformationen anzeigen" die Werte "Host", "Datenbank", "Benutzer" und "Kennwort" zu den Umgebungsvariablen hinzu. スクリーンショット 2020-10-30 15.15.19.png

Fügen Sie dann die Umgebungsvariablen zu Ihrer IDE hinzu. Ich verwende Eclipse und zeige Ihnen, wie es in Eclipse geht.

Klicken Sie mit der rechten Maustaste auf das Projekt und öffnen Sie "Ausführen", "Ausführen konfigurieren".

スクリーンショット 2020-10-30 15.21.11.png

Öffnen Sie in Maven Build das Projekt mit demselben Namen wie das Projekt, an dem Sie arbeiten. (Beispiel: Projektname "Snitch3") Geben Sie den gleichen Namen wie zuvor in "Config Vars" ein, geben Sie den Wert ein und drücken Sie "OK". スクリーンショット 2020-10-30 15.27.17.png

Die folgende Abbildung zeigt den Status, in dem das Hinzufügen von Umgebungsvariablen abgeschlossen ist. スクリーンショット 2020-10-30 15.24.24.png

Stellen Sie sicher, dass Sie zuletzt auf Übernehmen klicken! Ich habe vergessen, es anzuwenden, und war besorgt über das Ereignis, dass ich es für einen Tag nicht bereitstellen konnte. Wenn Sie befürchten, dass es erfolgreich angewendet wurde, können Sie die Registerkarte Umgebung erneut öffnen.

Bearbeiten Sie abschließend "application.properties". Da sich der Inhalt der Datei erheblich ändert, speichern Sie den Inhalt der Datei, die beim Ausführen in der lokalen Umgebung verwendet wurde, unter einem anderen Namen.

Bitte fügen Sie die folgenden Inhalte so ein, wie sie sind. Mit Blick auf den beschriebenen Inhalt werden die in "Anmeldeinformationen anzeigen" und "Eclipse" festgelegten Variablennamen beschrieben. Der zuvor eingestellte Wert wird hier angewendet und die Datenbank wird normal ausgetauscht. Auf diese Weise können Informationen wie Kennwörter funktionieren, während sie privat bleiben.

application.properties


spring.datasource.url=jdbc:postgresql://${host}/${database}?sslmode=require
spring.datasource.username=${POSTGRES_USER}
spring.datasource.password=${POSTGRES_PASS}
logging.level.jdbc=OFF
logging.level.jdbc.sqltiming=DEBUG

⑧ Maven erstellen und JAR-Datei erstellen

Öffnen Sie Eclipse und klicken Sie mit der rechten Maustaste auf das Projekt. Führen Sie "8 maven build" in "Run" aus.

スクリーンショット 2020-10-31 12.20.52.png

Wenn es richtig funktioniert, wird "BUILD SUCCESS" auf der Konsole angezeigt.

[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ Snitch ---
[INFO] Building jar: /Applications/Eclipse_2020-06.app/Contents/workspace/Snitch3/target/Snitch-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.3.3.RELEASE:repackage (repackage) @ Snitch ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- maven-dependency-plugin:3.1.2:copy (default) @ Snitch ---
[INFO] Configured Artifact: com.heroku:webapp-runner:9.0.30.0:jar
[INFO] com.heroku:webapp-runner:9.0.30.0:jar already exists in /Applications/Eclipse_2020-06.app/Contents/workspace/Snitch3/target/dependency
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  19.166 s
[INFO] Finished at: 2020-10-31T12:04:02+09:00
[INFO] ------------------------------------------------------------------------

Wenn Sie den Ordner "target" direkt unter dem Stammverzeichnis überprüfen, wird die im vorherigen Artikel erläuterte "beliebige Zeichenfolge -0.0.1-SNAPSHOT.jar" erstellt.

Beispiel: App-Name "Snitch"

スクリーンショット 2020-10-31 12.28.26.png

⑨ In Heroku bereitstellen

Stellen Sie "Arbitrary string -0.0.1-SNAPSHOT.jar" unter "target" bereit.

Setzen Sie das Stammverzeichnis auf das aktuelle Verzeichnis im Terminal und erstellen Sie ein neues Git-Repository mit "Git darin".

$ cd /Applications/Eclipse_2020-06.app/Contents/workspace/Snitch3
$ git init
Reinitialized existing Git repository in /Applications/Ecl ...

Geben Sie die Anwendung an und ordnen Sie sie dem lokalen Repository zu. Stellen Sie dann mit "heroku deploy: jar target / -0.0.1-SNAPSHOT.jar --app app name" bereit. Beispiel: App-Name "Snitch1"

$heroku git:remote -a snitch1
$heroku deploy:jar target/Snitch-0.0.1-SNAPSHOT.jar --app snitch1

Es wird einige Zeit dauern, aber wenn dies erfolgreich ist, wird auf der Konsole Folgendes angezeigt.

Uploading Snitch-0.0.1-SNAPSHOT.jar
-----> Packaging application...
       - app: snitch1
       - including: target/Snitch-0.0.1-SNAPSHOT.jar
-----> Creating build...
       - file: slug.tgz
       - size: 47MB
-----> Uploading build...
       - success
-----> Deploying...
remote: 
remote: -----> heroku-deploy app detected
remote: -----> Installing JDK 14... done
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 114.1M
remote: -----> Launching...
remote:        Released v15
remote:        https://snitch1.herokuapp.com/ deployed to Heroku
remote: 
-----> Done

Versuchen Sie, die App mit dem Befehl "heroku open -a app name" zu öffnen.

$heroku open -a snitch1

Die Anwendung wurde erfolgreich angezeigt.

スクリーンショット 2020-10-31 12.57.40.png

Wenn Sie von hier aus überprüfen möchten, ob jede Funktion normal funktioniert, können Sie das Protokoll mit "Protokolle anzeigen" überprüfen. Wenn also etwas mit dem Vorgang nicht stimmt, überprüfen Sie dies bitte hier.

スクリーンショット 2020-10-31 13.00.35.png

das ist alles! Es ist ein ziemlich langer Satz geworden, aber ich hoffe, es wird hilfreich sein.

Referenz: https://www.bedroomcomputing.com/2019/11/2019-1101-heroku-springboot-postgres/#%E6%B3%A8%E6%84%8F https://raishin.xyz/springboot-heroku-deploy/ https://codezine.jp/article/detail/8187?p=3 https://poppingcarp.com/heroku_postgres/ https://sun-blog.site/spring%E3%81%A7%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E6%AF%8E%E3%81%AB%E7%95%B0%E3%81%AA%E3%82%8Bdb%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%80%82/

Recommended Posts

Stellen Sie die von Spring Boot erstellte Anwendung für Heroku (öffentlich) bereit ②
Stellen Sie die von Spring Boot erstellte Anwendung für Heroku (öffentlich) bereit ①
WAR die WEB-Anwendung per Spring Boot und stellen Sie sie auf dem Tomcat-Server bereit
Stellen Sie Spring Boot-Anwendungen für Heroku bereit, ohne die Heroku-CLI zu verwenden
[Java] Stellen Sie die Spring Boot-Anwendung für den Azure App Service bereit
Stellen Sie das Spring Boot-Projekt in XAMPP für Tomcat bereit
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Stellen Sie die Spring Boot-Anwendung für Elastic Beanstalk bereit
◆ Rufen Sie die von Spring Boot erstellte API von React ab
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Schritte zur Bereitstellung in Heroku
Spring Boot 2.3 Verfügbarkeit von Anwendungen
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Booten nach Umgebung mit Spring Boot of Maven
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
Versuchen Sie Spring Boot von 0 bis 100.
Über die Funktion von Spring Boot aufgrund unterschiedlicher Versionen
Wie man mit Heroku einsetzt
[Spring Boot] Erstellung von Webanwendungen
Einführung in Spring Boot ~ ~ DI ~
Einführung in Spring Boot ② ~ AOP ~
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
Stellen Sie die Anwendung auf WildFly bereit
Einführung in Spring Boot Teil 1
Stellen Sie Ihre Anwendung mithilfe des Cloud Toolkit Maven-Plugins für EDAS bereit
Mindestkonfiguration zum Ausführen der Spring Boot-Anwendung in Azure Web Apps
[Rails / Heroku / MySQL] So setzen Sie die Datenbank der Rails-App auf Heroku zurück
Was ich bei der Migration von der Spring Boot 1.4-Serie zur 2.0-Serie getan habe
Was ich bei der Migration von der Spring Boot 1.5-Serie zur 2.0-Serie getan habe
Ich möchte die Standardfehlermeldung von Spring Boot steuern
Ich konnte die Docker + Laravel + MySQL App für Heroku bereitstellen!
Spring Boot-Anwendungsentwicklung in Eclipse
Überprüfungspunkte für den Spring Boot-Anwendungscode
Hot Deploy mit Spring Boot-Entwicklung
So stellen Sie Spring Boot + PostgreSQL ein
Erstellen Sie eine Anfrage-App mit Spring Boot
Implementieren Sie die Spring Boot-Anwendung in Gradle
Verwendung von ModelMapper (Spring Boot)
Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
Stellen Sie Rails on Docker für Heroku bereit
Stellen Sie die SpringBoot-Anwendung in AWS EC2 bereit
So wenden Sie Thymeleaf-Änderungen sofort mit #Spring Boot + maven auf den Browser an
[Spring Boot] Ich habe untersucht, wie die Nachbearbeitung der empfangenen Anforderung implementiert werden kann.
Untersuchen Sie den Inhalt der WAR-Datei, die von dem von Spring Initializr erstellten Projekt generiert wurde
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
Java-Anfänger haben versucht, mit Spring Boot eine einfache Webanwendung zu erstellen
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Spring Boot App Edition]
Ich habe Docker verwendet, um die Vorlage zu verfestigen, die mit Spring Boot entwickelt werden soll.
[Java] Stellen Sie eine mit Eclipse + Maven + Ontology mit Heroku erstellte Webanwendung bereit
[Für den internen Gebrauch] Für diejenigen, die dem Spring Boot-Projekt zugewiesen sind (im Aufbau)
Bereitstellen einer Node.js-Anwendung auf einer ECS-Instanz mithilfe des Cloud Toolkit
Verarbeitung beim Starten einer Anwendung mit Spring Boot
[Einführung in Spring Boot] Überprüfung der Formularvalidierung
Schritte zum Veröffentlichen einer Anwendung auf Heroku
Webanwendung soll erstellt werden (Bearbeitung)
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1