Créer un environnement de développement Spring Boot-gradle-mysql avec Docker

Créer un environnement de développement Spring Boot-gradle-mysql avec Docker

Environnement Gradle dans un conteneur pour CentOS à l'aide de Docker Construire un environnement mysql dans le conteneur DB Autoriser Spring Boot à s'exécuter dans un environnement virtuel

Constitution

récipient Conteneur CentOS: java8 / gradle / mysql Conteneur Mysql: Mysql

Démarrez Spring Boot dans le conteneur CentOS, accédez à la base de données du conteneur Mysql pour obtenir les données DB, puis affichez les données DB sur l'hôte via le port tomcat 8080.

Structure du répertoire

docker-compose.yml centos Dockerfile gradle-project- [nom-projet] -gradle fichiers de projet dossier mysql-settings-empty -Sql-init.sql

github

Description du répertoire / fichier

docker-compose.yml: description de docker-compose pour créer un conteneur CentOS et Mysql

centos-> Dockerfile: Dockerfile pour démarrer le conteneur CentOS

gradle-project-> [project-name]: Fichiers de projet Gradle de l'application Spring Boot

mysql-> settings: volume (/ var / lib / mysql) pour la persistance des données DB de mysql -> sql-> init.sql: Script d'initialisation lors du démarrage du conteneur Mysql

docker-compose.yml


version: "3"

services:
  centos:
    build: ./centos #Paramètres de construction de centos Dockerfile(Voir ci-dessous)
    container_name: boot-container #spécification du nom du conteneur centos
    ports:
      - "8080:8080" #Paramètre de transfert de port pour la communication entre les conteneurs OS hôtes
    volumes:
      - ./gradle-project:/gradle-project #gradle paramètres de persistance du projet
    links:
      - mysql # service[mysql]Permettre le traitement des communications inter-conteneurs
    depends_on:
      - mysql #Configuré pour créer un conteneur centos après le démarrage du conteneur mysql
    privileged: true #Accorder des privilèges d'administrateur par opération centos(Juste au cas où, vous n'avez pas à vous soucier des opérations de commande.)
    tty: true #Définir des centos pour continuer à fonctionner après la création du conteneur

  mysql:
    image: mysql:5.7
    container_name: boot-mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #Spécification du code de caractère de la commande du démon mysql
    volumes:
      - ./mysql/sql:/docker-entrypoint-initdb.d #Placez le script d'initialisation dans le conteneur
      - ./mysql/settings:/var/lib/mysql #Montez le répertoire qui stocke le groupe de données de base de données que vous souhaitez conserver
    environment: #Chaque paramètre de mysql
      MYSQL_DATABASE: bootdb
      MYSQL_USER: boot
      MYSQL_PASSWORD: boot
      MYSQL_ROOT_PASSWORD: root

centos-> Dockerfile


#Obtenir des centos7
FROM centos:7

#Acquisition du logiciel de commande effectuée dans le conteneur
RUN yum -y update
RUN yum -y install wget
RUN yum -y install unzip

# install mysql5.7
RUN yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# setting for mysql version 5.6 # mysql5.Si vous souhaitez utiliser 6, décommentez ci-dessous
#  RUN yum-config-manager --disable mysql57-community
#  RUN yum-config-manager --enable mysql56-community

RUN yum install -y mysql mysql-server

# install java 
RUN yum install -y java-1.8.0-openjdk
RUN yum install -y java-1.8.0-openjdk-devel

# install gradle
RUN wget https://services.gradle.org/distributions/gradle-6.4.1-bin.zip
RUN unzip -d /opt/gradle /gradle-6.4.1-bin.zip
RUN rm -rf /gradle-6.4.1-bin.zip
RUN ls /opt/gradle/

# setting path # gradle/Définissez à l'avance les variables d'environnement pour pouvoir utiliser les commandes java
ENV GRADLE_HOME /opt/gradle/gradle-6.4.1
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
ENV PATH ${JAVA_HOME}/bin:${GRADLE_HOME}/bin:${PATH}

gradle-project -> [project-name]:

Placez le fichier de projet Gradle dans le répertoire [project-name] Sortie de Spring Initilizer et fichiers de projet Eclipse Gradle Placez-le dans ce répertoire tel quel

Étant donné que le paramètre de persistance est défini, les opérations sur les fichiers de l'ordinateur hôte et du conteneur sont effectuées conjointement. Par conséquent, vous pouvez poursuivre le développement avec Eclipse, etc. et effectuer des opérations d'exécution de build / jar sur le conteneur tel quel.

mysql -> settings:

Stocke les fichiers qui stockent les données de la base de données MySQL Avant de créer le conteneur, c'est un répertoire vide Les fichiers de données, etc. sont ajoutés selon l'opération mysql après la création du conteneur

Les fichiers de données créés à l'intérieur du conteneur peuvent être conservés le volume est défini

mysql -> sql -> init.sql

Définir le script d'initialisation lors du démarrage du conteneur Cette fois, récupérez le contenu de l'enregistrement de données suivant à partir de Spring Boot, J'écris du code à afficher


CREATE DATABASE IF NOT EXISTS bootdb;

CREATE TABLE IF NOT EXISTS test(
  id int(11) PRIMARY KEY,
  data varchar(255) NOT NULL
);

INSERT INTO test (id, data) VALUES (1, 'welcome to spring boot with docker');

Du démarrage du conteneur au contrôle de fonctionnement



cd ./*docker-compose.Déplacer vers le répertoire courant de yml

#Démarrez le conteneur en arrière-plan
docker-compose up -d
  Creating boot-mysql ... done
  Creating boot-container ... done

#Confirmation de démarrage du conteneur
docker ps
  CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                    NAMES
  74f3771fef53        boot_with_docker_centos   "/bin/bash"              4 minutes ago       Up 4 minutes        0.0.0.0:8080->8080/tcp   boot-container
  5448c1a111c0        mysql:5.7                 "docker-entrypoint.s…"   4 minutes ago       Up 4 minutes        3306/tcp, 33060/tcp      boot-mysql

#Construire un projet avec Gradle
docker exec -w /gradle-project/docker-app boot-container gradle build
#Confirmez que le fichier jar a été créé
docker exec -w /gradle-project/docker-app/build/libs boot-container ls
  docker-app-0.0.1-SNAPSHOT.jar

#démarrage de démarrage
docker exec -w /gradle-project/docker-app/build/libs boot-container java -jar docker-app-0.0.1-SNAPSHOT.jar --spring.profiles.active=docker
* application.Le préfixe docker yml est utilisé pour séparer le traitement de démarrage dans l'environnement local et l'environnement du conteneur.

#Contrôle de fonctionnement
curl http://localhost:8080/docker/test
résultat[welcome to spring boot with docker]

#Conteneur vers le bas
docker-compose down


Supplément

mysql empêche l'accès direct depuis le système d'exploitation hôte. Conteneur CentOS (serveur) comme tremplin (liens) Il fonctionne comme un réseau privé pour accéder au conteneur Mysql (serveur) à partir du conteneur CentOS.

Par conséquent, si vous souhaitez exploiter des données sur Mysql, vous devez accéder à Mysql depuis CentOS. Par conséquent, comme décrit dans le Dockerfile CentOS, mysql est également installé du côté centos.

Ci-dessous un exemple d'accès Mysql


#Démarrer le processus bash du conteneur CentOS
docker exec -it  boot-container /bin/bash

#Connexion MySQL
mysql -u boot -p -h mysql

#Confirmation des données
mysql> use bootdb
mysql> select * from test;

+----+------------------------------------+
| id | data                               |
+----+------------------------------------+
|  1 | welcome to spring boot with docker |
+----+------------------------------------+
1 row in set (0.00 sec)


finalement

Lors du développement de liens de base de données tels que Spring Boot et Mysql Il est nécessaire d'installer chaque logiciel dans l'environnement local, Si vous gérez des conteneurs avec Docker, vous pouvez facilement créer un environnement de développement. J'ai également envisagé d'utiliser Docker pour le développement personnel.

Utilisez la fonction Volume de Docker pour conserver les données de la base de données Il est recommandé car il simplifie également la complexité de la gestion des projets Spring.

Si vous souhaitez vérifier les paramètres de Spring Boot, veuillez vous référer à github. github

Reference

https://blog.tiqwab.com/2017/03/21/docker-java.html [Manuel Docker pour les programmeurs](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83% 9E% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AEDocker% E6% 95% 99% E7% A7% 91% E6% 9B% B8-% E3% 82% A4 % E3% 83% B3% E3% 83% 95% E3% 83% A9% E3% 81% AE% E5% 9F% BA% E7% A4% 8E% E7% 9F% A5% E8% AD% 98% EF % BC% 86% E3% 82% B3% E3% 83% BC% E3% 83% 89% E3% 81% AB% E3% 82% 88% E3% 82% 8B% E7% 92% B0% E5% A2 % 83% E6% A7% 8B% E7% AF% 89% E3% 81% AE% E8% 87% AA% E5% 8B% 95% E5% 8C% 96-WINGS% E3% 83% 97% E3% 83 % AD% E3% 82% B8% E3% 82% A7% E3% 82% AF% E3% 83% 88% E9% 98% BF% E4% BD% 90% E5% BF% 97% E4% BF% 9D -ebook / dp / B017UGA7NG / ref = sr_1_2? __mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & crid = USOWDBYOQ865 & dchild = 1 & keywords =% E3% 83% 97% E3 % 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9E% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AEdocker% E6% 95 % 99% E7% A7% 91% E6% 9B% B8 & qid = 1601222075 & sprefix =% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9E% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AEDocker% 2Caps% 2C250 & sr = 8-2)

Recommended Posts

Créer un environnement de développement Spring Boot-gradle-mysql avec Docker
Créer un environnement de développement Spring Boot avec docker
Créer un environnement de développement Chisel avec Windows10 + WSL2 + VScode + Docker
Créez un environnement Vue3 avec Docker!
Créer un environnement de vérification SolrCloud avec Docker
J'ai essayé de créer un environnement de développement padrino avec Docker
Création d'un environnement de développement Spring Boot dans Vagrant
Construction de l'environnement de développement Laravel avec Docker (Mac)
Créer un environnement de développement PureScript avec Docker
Construire un environnement Rails 6 + MySQL avec Docker compose
[Docker] Créez un environnement Node.js + express + webpack avec Docker
Construction de l'environnement de développement Java Spring Boot + Docker
Créer un environnement de développement Wordpress avec Docker
[Memo] Créez facilement un environnement CentOS 8 avec Docker
Créez rapidement un environnement de développement WordPress avec Docker
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
Créer un environnement de développement d'applications Web Java avec Docker pour Mac Part2
Environnement de développement WSL2 + VSCode + Docker
[Docker] Construction de l'environnement Rails 5.2 avec docker
Spring Boot à partir de Docker
Créer un environnement Docker avec WSL
[Note] Créez un environnement Java à partir de zéro avec docker
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker
Construction de l'environnement Docker × Spring Boot
Créer un micro service avec Spring Boot
Les débutants créent un environnement Spring Tools Suite avec VS Code
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Créer un environnement de développement Java + Spring avec VirtualBox + Ubuntu (Xfce4)
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
Créez un environnement de développement «Spring Thorough Introduction» avec IntelliJ IDEA
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Créez un environnement pour Rails5 et postgresql avec Docker afin que pgadmin puisse également être utilisé
Créer un environnement de développement Web APP avec Java + Spring avec Visual Studio Code
Créer un environnement Node.js avec Docker Compose
Créer un environnement local Couchbase avec Docker
Construction d'environnement avec Docker pour les débutants
Déploiement à chaud avec le développement Spring Boot
Préparer l'environnement de développement Java avec Atom
Créez une application avec Spring Boot
Créer un environnement de développement Jooby avec Eclipse
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8