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