Déployer (publier) l'application créée par Spring Boot sur Heroku (1) est une continuation.
Créez une application sur Heroku avec la commande suivante.
$ heroku create <Nom de l'application>
Si vous exécutez l'application sans nom, elle sera nommée automatiquement. Si vous voulez que le nom de l'application soit "myapp", c'est "heroku create myapp".
Vous pouvez également le créer sur le site Heroku sans utiliser de commandes.
・ Sélectionnez «Créer une nouvelle application» dans «nouveau» en haut à droite du site
・ Entrez le nom de l'application et appuyez sur "Créer une application" La région ne peut actuellement être sélectionnée que parmi l'Amérique ou l'Europe.
Heroku ne prend pas en charge H2, et si vous utilisez H2 comme système de gestion de base de données, votre application ne fonctionnera pas correctement. Utilisez Postgres au lieu de H2. Le site officiel de Heroku garantit que Heroku et Postgres sont compatibles entre eux, car Heroku exploite Postgres depuis de nombreuses années et possède un savoir-faire cultivé grâce à l'interaction avec de nombreux utilisateurs.
Tout d'abord, ouvrez la page de l'application créée en (4) et recherchez "Heroku Postgres" dans "Modules complémentaires" sur l'onglet "Ressources".
Lorsque vous sélectionnez «Heroku Postgres», une fenêtre contextuelle comme celle ci-dessous s'ouvre. Appuyez sur «Soumettre le formulaire de commande».
Puisque vous utiliserez la base de données en entrant les commandes Postgres dans le terminal, installez postgresSQL sur le système d'exploitation.
$ brew install postgresql
Modifiez bash.profile et transmettez également le chemin.
bash.profile
export PATH=/usr/local/Cellar/postgresql@12/12.4_1/bin:$PATH
Entrez la commande suivante pour obtenir les informations de connexion à la base de données.
$ 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
Puis connectez-vous à la base de données.
$ heroku pg:psql -a [APP-NAME]
--> Connecting to postgresql-XXXXXX-XXXXXX
psql (10.6)
Connexion SSL(protocole: TLSv1.2, méthode de cryptage: ECDHE-RSA-AES256-GCM-SHA384, longueur en bits:256, compression:de)
"help"Obtenez de l'aide avec.
[APP-NAME]::DATABASE=>
Créez une table pour votre application dans la base de données connectée.
Exemple:
[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)
);
Au fait, le nom de la table ne peut pas être "user" en raison des restrictions de postgresql. Donnons-lui un nom différent.
Nous ajouterons des données à la table créée. Exemple:
[APP-NAME]::DATABASE=> INSERT INTO food(foodID, name, price, description) VALUES
('1', 'Gâteau roulé', '1000 yens', 'Gâteau roulé専門店で、手作りしている為、1日80本限定販売です。'),
('2', 'gâteau aux fraises', '900 yens', 'gâteau aux fraises専門店で、手作りしている為、1日80本限定販売です。'),
('3', 'Gâteau au chocolat 3', '1000 yens', 'Comme il est fait à la main dans un magasin spécialisé en gâteaux au chocolat, il est limité à 80 bouteilles par jour.'),
('4', 'Gâteau au fromage 4', '800 yens', 'Comme il est fait à la main dans un magasin spécialisé dans le gâteau au fromage, il est limité à 80 bouteilles par jour.'),
('5', 'Gâteau au matcha 5', '1 200 yens', 'Puisqu'il est fait à la main dans un magasin spécialisé de gâteau au matcha, il est limité à 80 bouteilles par jour.');
Lors de l'ajout de plusieurs enregistrements, il est recommandé d'écrire l'instruction INSERT SQL comme ci-dessus! Quand je l'ai exécuté avec l'instruction SQL ci-dessous, je n'ai pas pu l'insérer ... Exemple:
INSERT INTO food(foodID, name, price, description) VALUES
('1', 'Gâteau roulé', '1000 yens', 'Gâteau roulé専門店で、手作りしている為、1日80本限定販売です。');
INSERT INTO food(foodID, name, price, description) VALUES
('2', 'gâteau aux fraises', '900 yens', 'gâteau aux fraises専門店で、手作りしている為、1日80本限定販売です。');
INSERT INTO food(foodID, name, price, description) VALUES
('3', 'Gâteau au chocolat 3', '1000 yens', 'Comme il est fait à la main dans un magasin spécialisé en gâteaux au chocolat, il est limité à 80 bouteilles par jour.');
INSERT INTO food(foodID, name, price, description) VALUES
('4', 'Gâteau au fromage 4', '800 yens', 'Comme il est fait à la main dans un magasin spécialisé dans le gâteau au fromage, il est limité à 80 bouteilles par jour.');
INSERT INTO food(foodID, name, price, description) VALUES
('5', 'Gâteau au matcha 5', '1 200 yens', 'Puisqu'il est fait à la main dans un magasin spécialisé de gâteau au matcha, il est limité à 80 bouteilles par jour.');
Si les données sont ajoutées avec succès, le nombre de lignes de l'enregistrement ajouté sera affiché. Exemple: ajouter 5 lignes d'enregistrements
INSERT 0 5
Utilisez la commande ci-dessous pour vous déconnecter de la base de données.
[APP-NAME]::DATABASE=> \q
référence À propos de l'installation de postgresSQL: https://qiita.com/yorokobi_kannsya/items/f77d074e382a88dae971 Obtention des informations de connexion et connexion à la base de données: 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 / Que faire lorsque "heroku pg: psql -a [appname]" ne fonctionne pas: https://qiita.com/Puerto/items/5b886d0ed202761c4cc1
Ajoutez «postgresql» à pom.xml.
pom.xml
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
Ouvrez la page de l'application Heroku et cliquez sur "Heroku Postgres".
Sous Paramètres, cliquez sur Afficher les informations d'identification.
Les paramètres postgresql de Heroku seront affichés dans une liste, alors copiez-les et collez-les dans un mémo. Dans l'image, il s'agit de "AAA" et "BBB", mais comme ce ne sont pas des informations qui doivent être divulguées, le texte est collé plus tard.
Revenez à la page de l'application Heroku et définissez la valeur de réglage confirmée précédemment dans "Config Vars" sur l'onglet "Paramètres" comme variable d'environnement.
Vous pouvez ajouter une variable d'environnement en entrant le nom de la variable dans "KEY" et la valeur dans "VALUE" et en cliquant sur "Ajouter". Les noms de variable sont souvent différents de ceux indiqués dans "Afficher les informations d'identification".
Dans "Afficher les informations d'identification", ajoutez les valeurs de "Hôte", "Base de données", "Utilisateur" et "Mot de passe" aux variables d'environnement.
Ajoutez ensuite les variables d'environnement à votre IDE. J'utilise Eclipse, je vais donc vous montrer comment le faire dans Eclipse.
Faites un clic droit sur le projet et ouvrez "Exécuter", "Configurer Exécuter".
Dans Maven Build, ouvrez celui qui porte le même nom que le projet sur lequel vous travaillez. (Exemple: nom du projet "Snitch3")
Entrez le même nom que celui défini dans "Config Vars" précédemment, entrez la valeur et appuyez sur "OK".
La figure ci-dessous montre l'état où l'ajout des variables d'environnement est terminé.
Assurez-vous d'appuyer sur Appliquer en dernier! J'ai oublié de l'appliquer et je m'inquiétais du fait que je ne pourrais pas le déployer pendant une journée. Si vous craignez qu'il ait été appliqué avec succès, vous pouvez rouvrir l'onglet Environnement.
Enfin, éditez "application.properties". Étant donné que le contenu du fichier changera considérablement, enregistrez le contenu du fichier qui a été utilisé lors de l'exécution dans l'environnement local sous un nom différent.
Veuillez coller le contenu suivant tel quel. En regardant le contenu décrit, les noms de variables définis dans «Afficher les informations d'identification» et Eclipse sont décrits. La valeur définie précédemment est appliquée ici et la base de données est échangée normalement. Cela vous permet de garder les informations telles que les mots de passe privées tout en leur permettant de fonctionner.
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
Ouvrez Eclipse et faites un clic droit sur le projet. Exécutez "8 maven build" dans "Run".
Si cela fonctionne correctement, "BUILD SUCCESS" sera affiché sur la console.
[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] ------------------------------------------------------------------------
Si vous vérifiez le dossier "cible" directement sous le répertoire racine, la "chaîne de caractères arbitraires -0.0.1-SNAPSHOT.jar" expliquée dans l'article précédent est créée.
Exemple: nom de l'application "Snitch"
Déployez "Chaîne arbitraire -0.0.1-SNAPSHOT.jar" sous "cible".
Définissez le répertoire racine sur le répertoire courant dans le terminal et créez un nouveau dépôt git avec "git dedans".
$ cd /Applications/Eclipse_2020-06.app/Contents/workspace/Snitch3
$ git init
Reinitialized existing Git repository in /Applications/Ecl ...
Spécifiez l'application et associez-la au référentiel local. Déployez ensuite avec "heroku deploy: jar target / <chaîne arbitraire> -0.0.1-SNAPSHOT.jar - nom de l'application". Exemple: nom d'application "Snitch1"
$heroku git:remote -a snitch1
$heroku deploy:jar target/Snitch-0.0.1-SNAPSHOT.jar --app snitch1
Cela prendra un certain temps, mais en cas de succès, vous verrez ce qui suit sur la console.
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
Essayez d'ouvrir l'application avec la commande "heroku open -a app name".
$heroku open -a snitch1
L'application a été affichée avec succès.
Si vous voulez vérifier si chaque fonction fonctionne normalement à partir d'ici, vous pouvez vérifier le journal avec "Afficher les journaux", donc s'il y a un problème avec l'opération, veuillez vérifier ici.
c'est tout! C'est devenu une phrase assez longue, mais j'espère que ce sera utile.
référence: 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