Erstellen Sie mit Docker eine Spring Boot-gradle-mysql-Entwicklungsumgebung

Erstellen Sie mit Docker eine Spring Boot-gradle-mysql-Entwicklungsumgebung

Gradle-Umgebung im Container für CentOS mit Docker Erstellen Sie eine MySQL-Umgebung im DB-Container Ermöglichen Sie Spring Boot die Ausführung in einer virtuellen Umgebung

Verfassung

Container CentOS-Container: java8 / gradle / mysql MySQL-Container: MySQL

Starten Sie Spring Boot im CentOS-Container, greifen Sie auf die Datenbank des MySQL-Containers zu, um die DB-Daten abzurufen, und zeigen Sie die DB-Daten auf dem Host über den Tomcat-Port 8080 an.

Verzeichnisaufbau

docker-compose.yml Centos Dockerfile gradle-project- [Projektname] -gradle Projektdateien Ordner "MySQL-Einstellungen-leer" -Sql-init.sql

github

Verzeichnis- / Dateibeschreibung

docker-compose.yml: Docker-Compose-Beschreibung zum Erstellen von CentOS- und MySQL-Containern

centos-> Dockerfile: Dockerfile zum Starten des CentOS-Containers

gradle-project-> [Projektname]: Spring Boot App Gradle-Projektdateien

mysql-> settings: volume (/ var / lib / mysql) für persistierende DB-Daten von mysql -> sql-> init.sql: Initialisierungsskript beim Starten des MySQL-Containers

docker-compose.yml


version: "3"

services:
  centos:
    build: ./centos #Centos Dockerfile Build-Einstellungen(Siehe unten)
    container_name: boot-container #Centos Containernamensspezifikation
    ports:
      - "8080:8080" #Portweiterleitungseinstellung für die Kommunikation zwischen Host-Betriebssystemcontainern
    volumes:
      - ./gradle-project:/gradle-project #Einstellungen für die Persistenz des Gradle-Projekts
    links:
      - mysql # service[mysql]Ermöglichen der Kommunikation zwischen Containern
    depends_on:
      - mysql #Legen Sie fest, dass nach dem Starten des MySQL-Containers ein Centos-Container erstellt werden soll
    privileged: true #Gewähren Sie Administratorrechte nach Centos-Betrieb(Nur für den Fall, dass Sie sich keine Gedanken über Befehlsoperationen machen müssen.)
    tty: true #Stellen Sie Centos so ein, dass sie nach der Containererstellung weiterlaufen

  mysql:
    image: mysql:5.7
    container_name: boot-mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #Zeichencode-Spezifikation des MySQL-Daemon-Befehls
    volumes:
      - ./mysql/sql:/docker-entrypoint-initdb.d #Platzieren Sie das Initialisierungsskript im Container
      - ./mysql/settings:/var/lib/mysql #Hängen Sie das Verzeichnis ein, in dem die DB-Datengruppe gespeichert ist, die Sie beibehalten möchten
    environment: #Jede Parametereinstellung von MySQL
      MYSQL_DATABASE: bootdb
      MYSQL_USER: boot
      MYSQL_PASSWORD: boot
      MYSQL_ROOT_PASSWORD: root

centos-> Dockerfile


#Holen Sie sich centos7
FROM centos:7

#Erfassung der im Container durchgeführten Befehlssoftware
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.Wenn Sie 6 verwenden möchten, kommentieren Sie unten aus
#  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/Definieren Sie Umgebungsvariablen im Voraus, damit Sie Java-Befehle ausführen können
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]:

Legen Sie die Gradle-Projektdatei im Verzeichnis [Projektname] ab Spring Initilizer-Ausgabe und Eclipse-Gradle-Projektdateien Legen Sie es so wie es ist in diesem Verzeichnis ab

Da die Persistenzeinstellung vorgenommen wird, werden die Dateivorgänge auf dem Hostcomputer und im Container zusammen ausgeführt. Daher können Sie mit der Entwicklung mit Eclipse usw. fortfahren und Build- / JAR-Ausführungsvorgänge für den Container ausführen.

mysql -> settings:

Speichert Dateien, in denen MySQL-DB-Daten gespeichert sind Vor dem Erstellen des Containers handelt es sich um ein leeres Verzeichnis Datendateien usw. werden nach dem Erstellen des Containers gemäß der MySQL-Operation hinzugefügt

Im Container erstellte Datendateien können beibehalten werden Volumen ist definiert

mysql -> sql -> init.sql

Definieren Sie das Initialisierungsskript beim Starten des Containers Dieses Mal erhalten Sie den Inhalt des folgenden Datensatzes von Spring Boot: Ich schreibe Code zum Anzeigen


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');

Vom Container-Start bis zur Betriebsprüfung



cd ./*docker-compose.Wechseln Sie in das aktuelle Verzeichnis von yml

#Starten Sie den Container im Hintergrund
docker-compose up -d
  Creating boot-mysql ... done
  Creating boot-container ... done

#Bestätigung des Containerstarts
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

#Erstellen Sie ein Projekt mit gradle
docker exec -w /gradle-project/docker-app boot-container gradle build
#Bestätigen Sie, dass die JAR-Datei erstellt wurde
docker exec -w /gradle-project/docker-app/build/libs boot-container ls
  docker-app-0.0.1-SNAPSHOT.jar

#boot boot
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.Das Präfix yml docker wird verwendet, um die Startverarbeitung in der lokalen Umgebung und der Containerumgebung zu trennen.

#Funktionsprüfung
curl http://localhost:8080/docker/test
Ergebnis[welcome to spring boot with docker]

#Container runter
docker-compose down


Ergänzung

MySQL verhindert den direkten Zugriff vom Host-Betriebssystem. CentOS-Container (Server) als Sprungbrett (Links) Es wird als privates Netzwerk ausgeführt, um vom CentOS-Container aus auf den MySQL-Container (Server) zuzugreifen.

Wenn Sie Daten auf MySQL verarbeiten möchten, müssen Sie daher über CentOS auf MySQL zugreifen. Daher wird MySQL, wie in der CentOS-Docker-Datei beschrieben, auch auf der Centos-Seite installiert.

Unten finden Sie ein Beispiel für den MySQL-Zugriff


#Starten Sie den Bash-Prozess des CentOS-Containers
docker exec -it  boot-container /bin/bash

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

#Datenbestätigung
mysql> use bootdb
mysql> select * from test;

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


Schließlich

Bei der Entwicklung von Datenbankverknüpfungen wie Spring Boot und MySQL Es ist notwendig, jede Software in der lokalen Umgebung zu installieren. Wenn Sie Container mit Docker verwalten, können Sie problemlos eine Entwicklungsumgebung erstellen Ich habe auch überlegt, Docker für die persönliche Entwicklung zu verwenden.

Verwenden Sie die Volume-Funktion von Docker, um Datenbankdaten beizubehalten Es wird empfohlen, da es auch die Komplexität der Verwaltung von Spring-Projekten vereinfacht.

Wenn Sie die Einstellungen von Spring Boot überprüfen möchten, lesen Sie bitte github. github

Reference

https://blog.tiqwab.com/2017/03/21/docker-java.html [Docker-Lehrbuch für Programmierer](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

Erstellen Sie mit Docker eine Spring Boot-gradle-mysql-Entwicklungsumgebung
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Erstellen Sie eine Chisel-Entwicklungsumgebung mit Windows 10 + WSL2 + VScode + Docker
Erstellen Sie mit Docker eine Vue3-Umgebung!
Erstellen Sie mit Docker eine SolrCloud-Überprüfungsumgebung
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
Erstellen einer Spring Boot-Entwicklungsumgebung in Vagrant
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Erstellen Sie mit Docker eine PureScript-Entwicklungsumgebung
[Docker] Erstellen Sie mit Docker eine Node.js + Express + Webpack-Umgebung
Aufbau der Spring Boot + Docker Java-Entwicklungsumgebung
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
[Memo] Erstellen Sie mit Docker ganz einfach eine CentOS 8-Umgebung
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
Erstellen Sie eine Spring Boot-Umgebung mit Windows + VS-Code
Konstruktions- und Entwicklungsverfahren für lokale WordPress-Umgebungen mit Docker
Erstellen Sie mit Docker für Mac Teil2 eine Entwicklungsumgebung für Java-Webanwendungen
WSL2 + VSCode + Docker-Entwicklungsumgebung
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Spring Boot beginnend mit Docker
Erstellen einer Docker-Umgebung mit WSL
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
Erstellen Sie eine Entwicklungsumgebung, um Ruby on Jets + React-Apps mit Docker zu erstellen
Aufbau der Docker x Spring Boot-Umgebung
Erstellen Sie mit Spring Boot einen Mikrodienst
Anfänger erstellen eine Spring Tools Suite-Umgebung mit VS Code
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Erstellen Sie eine Java + Spring-Entwicklungsumgebung mit VirtualBox + Ubuntu (Xfce4).
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
Erstellen Sie mit IntelliJ IDEA eine Entwicklungsumgebung "Spring Thorough Introduction"
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Erstellen Sie mit Docker eine Umgebung für Rails5 und postgresql, damit auch pgadmin verwendet werden kann
Erstellen Sie mit Java + Spring eine Web-APP-Entwicklungsumgebung mit Visual Studio Code
Erstellen Sie die Node.js-Umgebung mit Docker Compose
Erstellen Sie mit Docker eine lokale Couchbase-Umgebung
Umgebungsbau mit Docker für Anfänger
Hot Deploy mit Spring Boot-Entwicklung
Bereiten Sie die Java-Entwicklungsumgebung mit Atom vor
Erstellen Sie eine App mit Spring Boot
Erstellen Sie mit Eclipse eine Jooby-Entwicklungsumgebung
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8