spring-boot-doma2-sample Ich habe auf das Repository verwiesen. ** build.gradle ** wurde neu geschrieben.
Spring Initializr
Erstellen Sie zunächst an der folgenden Stelle eine Federanwendung. https://start.spring.io/
Klicken Sie abschließend unten auf * GENERATE *, um die heruntergeladene Zip-Datei zu entpacken und in einen geeigneten Verzeichnisnamen umzubenennen.
** docker-compose ** erscheint nicht in initializr, also füge es zu ** build.gradle ** hinzu.
Wählen Sie unter ** Öffnen oder Importieren ** das oben genannte umbenannte Verzeichnis aus.
Öffnen Sie ** build.gradle ** in Ihrem Projekt.
Da dies wie folgt ist, fügen Sie bitte den Teil // add
hinzu.
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.3.1.BUILD-SNAPSHOT'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'com.avast.gradle.docker-compose' version '0.12.1' //hinzufügen
id 'org.flywaydb.flyway' version '6.4.3'
}
// ...Abkürzung
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.flywaydb:flyway-core'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
Site zum Überprüfen von Gradle-Plugins → Gradle-Plugins suchen
Erstellen Sie ein ** Docker ** -Verzeichnis in Ihrem Projekt und erstellen Sie ** docker-compose.yml **.
docker-compose.yml
version: '2'
services:
todo-db:
build: ./mysql #Geben Sie das Verzeichnis an, in dem sich die Docker-Datei befindet
environment:
- MYSQL_DATABASE=todo
- MYSQL_ROOT_USER=root
- MYSQL_ROOT_PASSWORD=passw0rd
- TZ=Japan
image: docker_todo-db
container_name: todoDb
ports:
- "33068:3306" #Wenn Sie bereits 33068 verwenden, ändern Sie es in eine andere Nummer
Erstellen Sie ein ** mysql ** -Verzeichnis und dann ** Dockerfile ** und ** my.cnf **.
Dockerfile
FROM mysql:5.7
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
my.cnf
[mysqld]
default-storage-engine=InnoDB
user=mysql
character-set-server=utf8mb4
skip-character-set-client-handshake
;general_log=1
;general_log_file=/var/log/mysql/query.log
long_query_time=3
slow_query_log_file=/var/log/mysql/slow-query.log
max_allowed_packet=16MB
innodb_file_per_table
innodb_buffer_pool_size=64M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=2M
group_concat_max_len=2048
[mysqld_safe]
log-error=/var/log/mysqld.log
[mysql]
default-character-set=utf8mb4
Öffnen Sie ein Terminal mit IntelliJ und führen Sie ./gradlew compose Up
aus.
Wenn Sie ein Protokoll wie das folgende sehen, sind Sie fertig.
> Task :composeUp
Building todo-db
...Kürzung
TCP socket on localhost:33068 of 'todoDb' is ready
+--------+----------------+-----------------+
| Name | Container Port | Mapping |
+--------+----------------+-----------------+
| todoDb | 3306 | localhost:33068 |
+--------+----------------+-----------------+
BUILD SUCCESSFUL in 15s
Überprüfen Sie, ob die Tabelle in MySQL im Docker-Container erstellt wurde.
Verwenden Sie das IntelliJ-Terminal. Führen Sie "Docker ps" aus. Stellen Sie sicher, dass der laufende Container wie unten gezeigt angezeigt wird.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
149c67cc70d5 docker_todo-db "docker-entrypoint.s…" 17 seconds ago Up 15 seconds 33060/tcp, 0.0.0.0:33068->3306/tcp todoDb
Führen Sie "docker exec -it todoDb / bin / bash" aus, um in den Container zu gelangen.
Es wird zu "root @
$ docker exec -it todoDb /bin/bash
root@149c67cc70d5:/#
Greifen Sie mit mysql -u root -p
auf MySQL zu.
Sie werden nach einem Passwort gefragt. Geben Sie daher hier das in ** docker-compose.yml ** angegebene "** passw0rd **" ein.
MYSQL_ROOT_PASSWORD=passw0rd
$ mysql -u root -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| todo |
+--------------------+
5 rows in set (0.00 sec)
Eine Tabelle mit dem Namen ** todo ** wurde ordnungsgemäß erstellt.
Im nächsten Artikel möchte ich die Migration mit ** flyway-core ** automatisieren. Nächster Artikel ⇨ Artikel zur Migrationsautomatisierung
Recommended Posts