spring-boot-doma2-sample J'ai fait référence au référentiel. ** build.gradle ** a été écrit d'une nouvelle manière.
Spring Initializr
Commencez par créer une application printemps sur le site suivant. https://start.spring.io/
Enfin, cliquez sur * GÉNÉRER * en bas pour décompresser le fichier zip téléchargé et renommez-le avec un nom de répertoire approprié.

** docker-compose ** n'apparaît pas dans initializr, alors ajoutez-le à ** build.gradle **.
Dans ** Ouvrir ou importer **, sélectionnez le répertoire renommé mentionné ci-dessus.

Ouvrez ** build.gradle ** dans votre projet.
Comme c'est le cas, ajoutez la partie // add.
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' //ajouter à
id 'org.flywaydb.flyway' version '6.4.3'
}
// ...Abréviation
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 pour vérifier les plugins Gradle → Rechercher les plugins Gradle


Créez un répertoire ** docker ** dans votre projet et créez ** docker-compose.yml **.
docker-compose.yml
version: '2'
services:
todo-db:
build: ./mysql #Spécifiez le répertoire où se trouve le Dockerfile
environment:
- MYSQL_DATABASE=todo
- MYSQL_ROOT_USER=root
- MYSQL_ROOT_PASSWORD=passw0rd
- TZ=Japan
image: docker_todo-db
container_name: todoDb
ports:
- "33068:3306" #Si vous utilisez déjà 33068, remplacez-le par un autre numéro
Créez un répertoire ** mysql ** puis ** Dockerfile ** et ** 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
Ouvrez un terminal avec intelliJ et exécutez ./gradlew compose Up.
Si vous voyez un journal comme celui ci-dessous, vous avez terminé.
> Task :composeUp
Building todo-db
...réduction
TCP socket on localhost:33068 of 'todoDb' is ready
+--------+----------------+-----------------+
| Name | Container Port | Mapping |
+--------+----------------+-----------------+
| todoDb | 3306 | localhost:33068 |
+--------+----------------+-----------------+
BUILD SUCCESSFUL in 15s
Vérifiez si la table est créée dans MySQL dans le conteneur docker.
Utilisez le terminal IntelliJ.
Exécutez docker ps. Confirmez que le conteneur en cours d'exécution est affiché comme indiqué ci-dessous.
$ 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
Exécutez docker exec -it todoDb / bin / bash pour entrer dans le conteneur.
Il devient root @ <CONTAINER ID>: / #, et vous pouvez voir qu'il se trouve à l'intérieur du conteneur.
$ docker exec -it todoDb /bin/bash
root@149c67cc70d5:/#
Accédez à MySQL avec mysql -u root -p.
Il vous sera demandé un mot de passe, alors entrez ici le "** passw0rd **" spécifié dans ** docker-compose.yml **.
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)
Une table appelée ** todo ** a été créée correctement.
Dans le prochain article, j'aimerais automatiser la migration en utilisant ** flyway-core **. Article suivant ⇨ article sur l'automatisation de la migration
Recommended Posts