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
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.
docker-compose.yml Centos Dockerfile gradle-project- [Projektname] -gradle Projektdateien Ordner "MySQL-Einstellungen-leer" -Sql-init.sql
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
#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');
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
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)
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