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