[JAVA] Déployez l'application créée par Spring Boot sur Heroku (public) ②

Déployer (publier) l'application créée par Spring Boot sur Heroku (1) est une continuation.

④ Créez une application sur Heroku

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 スクリーンショット 2020-10-29 16.46.29.png

・ 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.

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

⑤ Add-on Postgres et ajouter des données

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".

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

Lorsque vous sélectionnez «Heroku Postgres», une fenêtre contextuelle comme celle ci-dessous s'ouvre. Appuyez sur «Soumettre le formulaire de commande». スクリーンショット 2020-10-30 13.05.52.png

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

Ajoutez «postgresql» à pom.xml.

pom.xml


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

⑦ Définir les variables d'environnement liées à Postgres

Ouvrez la page de l'application Heroku et cliquez sur "Heroku Postgres". スクリーンショット 2020-10-30 14.47.32.png

Sous Paramètres, cliquez sur Afficher les informations d'identification. スクリーンショット 2020-10-30 14.48.25.png

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.

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

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. スクリーンショット 2020-10-30 15.03.48.png

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. スクリーンショット 2020-10-30 15.15.19.png

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".

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

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". スクリーンショット 2020-10-30 15.27.17.png

La figure ci-dessous montre l'état où l'ajout des variables d'environnement est terminé. スクリーンショット 2020-10-30 15.24.24.png

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

⑧ Construisez maven et créez un fichier jar

Ouvrez Eclipse et faites un clic droit sur le projet. Exécutez "8 maven build" dans "Run".

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

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"

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

⑨ Déployer sur Heroku

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.

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

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.

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

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

Déployez l'application créée par Spring Boot sur Heroku (public) ②
Déployez l'application créée par Spring Boot sur Heroku (public) ①
WAR l'application WEB par Spring Boot et la déployer sur le serveur Tomcat
Déployez des applications Spring Boot sur Heroku sans utiliser la CLI Heroku
[Java] Déployer l'application Spring Boot sur Azure App Service
Déployer le projet Spring Boot sur Tomcat dans XAMPP
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Déployer l'application Spring Boot sur Elastic Beanstalk
◆ Obtenez l'API créée par Spring Boot à partir de React
[Spring Boot] Comment se référer au fichier de propriétés
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Étapes de déploiement sur Heroku
Disponibilité de l'application Spring Boot 2.3
05. J'ai essayé de supprimer la source de Spring Boot
J'ai essayé de réduire la capacité de Spring Boot
Comment démarrer par environnement avec Spring Boot de Maven
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
Essayez Spring Boot de 0 à 100.
À propos de la fonction de Spring Boot en raison de différentes versions
Comment déployer avec heroku
[Spring Boot] Création d'applications Web
Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Application Java CICS-Run - (4) Application Spring Boot
Déployer l'application sur WildFly
Introduction à Spring Boot, partie 1
Déployez votre application sur EDAS à l'aide du plugin Cloud Toolkit Maven
Configuration minimale pour exécuter l'application Spring Boot sur Azure Web Apps
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0
Ce que j'ai fait lors de la migration de la série Spring Boot 1.5 vers la série 2.0
Je veux contrôler le message d'erreur par défaut de Spring Boot
J'ai pu déployer l'application Docker + laravel + MySQL sur Heroku!
Développement d'applications Spring Boot dans Eclipse
Points de révision du code de l'application Spring Boot
Déploiement à chaud avec le développement Spring Boot
Comment configurer Spring Boot + PostgreSQL
Créer une application d'enquête avec Spring Boot
Implémenter l'application Spring Boot dans Gradle
Comment utiliser ModelMapper (Spring boot)
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
Déployer des rails sur Docker vers heroku
Déployer l'application SpringBoot sur AWS EC2
Comment appliquer immédiatement les modifications de Thymeleaf au navigateur avec #Spring Boot + maven
[Spring Boot] J'ai étudié comment implémenter le post-traitement de la demande reçue.
Examiner le contenu du fichier WAR généré par le projet créé par Spring Initializr
Étapes pour rendre Spring Boot capable de faire référence à la valeur dans le fichier de propriétés
Un débutant Java a essayé de créer une application Web simple à l'aide de Spring Boot
Déployer automatiquement des applications Web développées en Java à l'aide de Jenkins [Spring Boot App Edition]
J'ai utilisé Docker pour solidifier le modèle à développer avec Spring Boot.
[Java] Déployer une application Web créée avec Eclipse + Maven + Ontology avec Heroku
[Pour usage interne] Pour ceux affectés au projet Spring Boot (en construction)
Déployer une application Node.js sur une instance ECS à l'aide du Cloud Toolkit
Traitement lors du démarrage d'une application avec Spring Boot
[Introduction à Spring Boot] Vérification de la validation du formulaire
Étapes pour publier une application sur Heroku
Application Web dont la création est prévue (édition)
L'histoire de la transition de Spring Boot 1.5 à 2.1