Das Bereitstellen (Veröffentlichen) der von Spring Boot für Heroku (1) erstellten Anwendung ist eine Fortsetzung.
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
・ Geben Sie den App-Namen ein und klicken Sie auf "App erstellen". Die Region kann derzeit nur aus Amerika oder Europa ausgewählt werden.
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".
Wenn Sie "Heroku Postgres" auswählen, wird ein Popup wie das folgende geöffnet. Drücken Sie auf "Bestellformular senden".
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.
pom.xml
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
Öffnen Sie die Heroku-Anwendungsseite und klicken Sie auf "Heroku Postgres".
Klicken Sie unter Einstellungen auf Anmeldeinformationen anzeigen.
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.
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.
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.
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".
Ö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".
Die folgende Abbildung zeigt den Status, in dem das Hinzufügen von Umgebungsvariablen abgeschlossen ist.
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
Öffnen Sie Eclipse und klicken Sie mit der rechten Maustaste auf das Projekt. Führen Sie "8 maven build" in "Run" aus.
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"
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 /
$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.
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.
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