[JAVA] Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)

La base de données sera liée à Spring boot + docker!

Premier article. Veuillez en souligner beaucoup.

Quand j'ai pensé à créer un portfolio avec Spring Boot, j'ai pris beaucoup de temps pour créer une base de données avec docker, j'ai donc pris une note.

Ce but

Affiche la valeur de la base de données (Mysql) construite à l'aide de docker dans l'exemple de projet à l'écran

・ Lecteurs cibles ...

docker débutant or Ingénieur avec peu d'expérience en développement (1 ou 2 ans)

Perspective sur laquelle se concentrer cette fois

・ Comment créer un fichier docker -Lien entre l'environnement MySQL créé sur docker et le projet Spring Boot

Qu'est-ce que docker

Je publierai un article de @ kotaro-dr. [Illustration] Comprendre toute l'image de Docker -Partie 1- ┗ Le document est propre et facile à comprendre même pour les débutants [Illustration] Comprendre toute l'image de Docker - Partie 2 ┗ Au début de la deuxième partie, il y aura une histoire sur la gestion des données liées à la persistance de la base de données, donc cette fois, c'est OK si vous regardez au moins autant. Je publierai également la deuxième partie. [Illustration] Comprendre toute l'image de Docker -Partie 2-

Pourquoi docker

・ Plus clair que la boîte Vurtual ← Les détails sont omis car le thème et la mise au point sont flous. ・ L'environnement de développement peut être préparé immédiatement ┗ "Cela fonctionne sur ce terminal, mais cela ne fonctionne pas sur mon terminal." ┗ Lorsque vous demandez à une connaissance ou que vous utilisez un service d'assurance qualité tel que teratail, vous pouvez transmettre votre environnement actuel à l'autre partie tel quel, et il vous sera plus facile d'obtenir une réponse.

Essayons-le immédiatement

■ Informations environnementales Langue: Java (jdk11) FW:Spring boot IDE:IntelliJ

C'est l'arborescence du projet à créer cette fois. (Désolé pour l'image)

スクリーンショット 2019-02-24 15.49.49.jpg

Jusqu'à présent, ce n'était que des liens, mais j'aimerais bientôt publier mes propres mots.

Créer un projet

Cette fois, je vais faire une chose simple qui affiche toutes les valeurs de la base de données. C'est un niveau que vous pouvez voir en le regardant, donc avec un schéma de cuisson de 3 minutes, le résultat est le suivant. spring-boot-docker(github)

À propos de ʻapplication.properties`

spring.datasource.url=jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8&serverTimezone=JST 
#//demo est le nom de cette base de données
spring.datasource.username=root //Nom d'utilisateur
spring.datasource.password=p@ssw0rd  //mot de passe
spring.jpa.hibernate.ddl-auto=update  //Créer s'il n'y a pas de table correspondant à Entité au démarrage de l'application

Il s'agit du paramètre minimum requis pour la liaison de base de données. Veuillez noter qu'il est nécessaire de faire correspondre le contenu de docker-compose.yml qui sera créé ultérieurement.

Créer un fichier docker

Cette fois, je vais créer un dossier appelé docker dans la même hiérarchie que src et y créer des fichiers associés. Je suis conscient qu'il n'y a pas de spécification spécifique car je n'ai pas trouvé de description de l'emplacement.

fockerfile



FROM mysql:8.0  #Spécifiez l'image à acquérir depuis Docker Hub

RUN /bin/cp -f /etc/localtime /etc/localtime.org
RUN /bin/cp -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

COPY ./my.cnf /etc/mysql/conf.d/

RUN mkdir -p /var/log/mysql
RUN chown mysql.mysql /var/log/mysql

COPY: le côté gauche de la commande est le côté local et le côté droit est le côté image du docker. RUN: peut exécuter des commandes installées sur l'image cible

docker-compose.yml


version: '3'
services:
    mysql:
        build: ./mysql
        environment:
            - MYSQL_DATABASE=demo
            - MYSQL_ROOT_USER=root
            - MYSQL_ROOT_PASSWORD=p@ssw0rd
            - TZ=Japan
        volumes:
            - ./initdb.d:/docker-entrypoint-initdb.d
            - ./dbdata:/var/lib/mysql
        ports:
            - "3306:3306"

↑ Lorsqu'il est séparé par un deux-points (:)

-Le côté gauche montre le chemin du côté hôte et le côté droit montre le chemin du côté du conteneur.
-Saisie initiale des données → Mettre le fichier sql à lire en premier dans le répertoire initdb.d
Persistance → Chaque fois que vous traitez dbdata, des fichiers équivalents à des données arriveront de plus en plus

Commençons docker-compose

Cliquez avec le bouton droit sur docker-compose.yml sur le projet et sélectionnez "Play". スクリーンショット 2019-03-01 22.49.47.jpg Ensuite, la construction de l'environnement commencera par interpréter le dockerfile et docker-compose.yml que j'ai écrit plus tôt. Lorsque vous voyez que «Compose: docker» a été déployé avec succès. »Comme indiqué ci-dessous, vous avez terminé. スクリーンショット 2019-03-01 22.53.15.jpg

Maintenant, allons dans le conteneur et vérifions si la base de données est complète. Dans le terminal (invite de commande pour Windows), accédez au répertoire du projet. à l'intérieur de ça Vérifiez l'état de fonctionnement actuel du conteneur avec la commande docker ps. La figure ci-dessous est après l'exécution スクリーンショット 2019-03-02 0.18.36.jpg

Vous pouvez voir que l'image de mysql est créée. Utilisez cet ID ou NOMS DE CONTENEUR pour commencer. Cette fois, je vais le démarrer en utilisant le CONTAINER ID.

Entrez dans le conteneur avec docker exec -it [CONTAINER ID] bash. root @ 37c06170b19b: / # Si le terminal (invite de commande) ressemble à ceci, il est inclus. Depuis cet écran, connectez-vous à Mysql en tant qu'utilisateur root. mysql -u root Cette fois, le mot de passe est p @ ssw0rd. Connectez-vous à mysql comme ci-dessous スクリーンショット 2019-03-02 0.40.51.jpg

Spécifiez cet exemple de base de données avec ʻuse demo. Après cela, vérifiez correctement sql. Puisque la table ʻuser est incluse comme données initiales. select * from user; スクリーンショット 2019-03-02 0.46.40.jpg J'ai pu vérifier le contenu du tableau.

Après cela, si vous exécutez votre propre exemple de projet minable depuis Docker Application ... Nous avons réussi à établir un lien avec la base de données comme indiqué ci-dessous. スクリーンショット 2019-03-02 0.52.29(2).jpg

En utilisant le menu fixe de cette manière, vous pouvez transmettre l'intégralité de l'environnement à l'autre partie, vous n'avez donc pas à vous soucier de configurer la base de données ou de saisir des données à l'autre partie. La connaissance de docker est encore superficielle, mais je pense qu'il sera de plus en plus utilisé à l'avenir, donc je voudrais l'utiliser activement.

La prochaine fois, j'aimerais essayer l'écran d'authentification avec Spring Boot.

Recommended Posts

Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Créer un environnement de développement Spring Boot avec docker
[Spring Boot] Construction de l'environnement (macOS)
[Docker] Construction de l'environnement Rails 5.2 avec docker
Créer un environnement Node.js avec Docker Compose
◆ Spring Boot + note de construction de l'environnement gradle
Construction d'environnement avec Docker pour les débutants
Liaison de base de données avec doma2 (Spring boot)
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
Construction de l'environnement GPU avec Docker [version d'octobre 2020]
Construction d'environnement de rails avec Docker (apocalypse personnelle)
Mémo de construction de l'environnement Spring Boot sur Mac
Construction de l'environnement de développement Laravel avec Docker (Mac)
Modifier Mysql avec des commandes dans l'environnement Docker
Créer un environnement de développement Spring Boot-gradle-mysql avec Docker
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Essayez Spring Boot 1 (Construction de l'environnement ~ Démarrage de Tomcat)
[Printemps] Construction de l'environnement
Testez le contrôleur avec Mock MVC dans Spring Boot
Traitement asynchrone avec exécution régulière dans Spring Boot
Créez des projets Spring Boot par environnement avec Gradle
Construction d'environnement DB avec DBFlute Intro + H2 Database
Créer un environnement Spring Boot avec Windows + VS Code
Procédure de construction et de développement de l'environnement local Wordpress avec Docker
Coexistence de Flyway dans la base de données embarquée (h2) de l'environnement de développement et la base de données des versions (SQL Server) avec Spring Boot
Construction de l'environnement Rails Docker
Environnement de développement-développement Spring Boot-
Télécharger avec Spring Boot
Inclure le pot externe dans le package avec Spring boot2 + Maven3
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
[Note] Créez un environnement Python3 avec Docker dans EC2
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 1
Comment démarrer par environnement avec Spring Boot de Maven
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 2
Créer un environnement de développement Java + Spring avec VirtualBox + Ubuntu (Xfce4)
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Mémo de construction de l'environnement MySQL 5.7 (Docker)
Multi-projets Spring Boot 2 avec Gradle
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Construction de l'environnement JavaFX dans Java 13
Mémo de construction de l'environnement Redmine (Docker)
Erreur de connexion à la base de données Spring
Hello World avec Spring Boot
Changements majeurs dans Spring Boot 1.5
Premiers pas avec Spring Boot