Dans l'article précédent, j'ai créé un conteneur pour l'application. Cette fois, nous allons créer un conteneur MySQL sur Docker et effectuer la saisie et l'accès aux données réelles.
Comment créer un environnement pour [TypeScript + Vue + Express + MySQL] avec Docker ~ Vue Edition ~
Nous allons créer un conteneur db séparément du conteneur d'application créé la dernière fois. La structure finale du répertoire est la suivante.
├─ app
├─ db
│ └─ conf
│ └─ my.cnf //ajouter à
│ └─ init_db
│ └─ test.sql //ajouter à
├─ docker
│ └─ app
│ └─ db
│ └─ Dockerfile //ajouter à
├─ .env //ajouter à
└─ docker-compose.yml //Éditer
docker-compose.yml
version: "3"
services:
app:
container_name: app_container
build: ./docker/app
ports:
- 8080:8080
volumes:
- ./app:/app
stdin_open: true
tty: true
environment:
TZ: Asia/Tokyo
command: yarn serve
#Ne modifiez pas le conteneur d'application précédent
#Ajoutez ce qui suit
db:
container_name: db_container
build: ./docker/db
image: mysql:5.7
ports:
- 3306:3306
volumes:
- ./db/conf/my.cnf:/etc/mysql/conf.d/mysql.cnf #Lier les paramètres MySQL
- ./db/init_db:/docker-entrypoint-initdb.d #Lier le fichier SQL pour la saisie initiale des données
- test_data:/var/lib/mysql #Lier les données persistantes
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE} #Lire divers paramètres des variables d'environnement du conteneur
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ="Asia/Tokyo"
volumes:
test_data: #Persistance des données
Le paramètre pour lancer le conteneur d'application et le conteneur db en même temps est terminé ci-dessus. Le nom de la base de données, le nom d'utilisateur et le mot de passe à accéder sont exécutés en se référant aux variables d'environnement du conteneur depuis [environnement].
/docker/db/Dockerfile
FROM mysql
EXPOSE 3306
CMD ["mysqld"]
Définissez le port sur 3306.
db/conf/my.cnf
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
Définissez le code de caractère de MySQL.
.env
MYSQL_DATABASE=test_db //Définissez le nom de la base de données décrit plus tard
MYSQL_USER={Définissez un nom d'utilisateur approprié}
MYSQL_PASSWORD={Définir le mot de passe pour l'accès MySQL}
MYSQL_ROOT_PASSWORD={Définir le mot de passe pour l'accès MySQL}
Ce que vous définissez ici est référencé lorsque le conteneur démarre et est défini dans la variable d'environnement du conteneur. Le mot de passe de connexion sera le mot de passe défini ci-dessus.
* Exclut les fichiers .env avec .gitignore afin qu'ils ne soient pas inclus dans Git. Ne poussez pas si vous faites une erreur! </ font>
db/init_db/test.sql
DROP DATABASE IF EXISTS test_db;
CREATE DATABASE test_db;
USE test_db;
DROP TABLE IF EXISTS test;
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT primary key,
name varchar(30),
description varchar(255)
);
INSERT INTO test (id, name, description) VALUES (1, 'test1', 'Données de test 1.');
INSERT INTO test (id, name, description) VALUES (2, 'test2', 'Données de test 2.');
INSERT INTO test (id, name, description) VALUES (3, 'test3', 'Données de test 3.');
INSERT INTO test (id, name, description) VALUES (4, 'test4', 'Données de test 4.');
INSERT INTO test (id, name, description) VALUES (5, 'test5', 'Données de test 5.');
INSERT INTO test (id, name, description) VALUES (6, 'test6', 'Données de test 6.');
INSERT INTO test (id, name, description) VALUES (7, 'test7', 'Données de test 7.');
INSERT INTO test (id, name, description) VALUES (8, 'test8', 'Données de test 8.');
INSERT INTO test (id, name, description) VALUES (9, 'test9', 'Données de test 9.');
INSERT INTO test (id, name, description) VALUES (10, 'test10', 'Données de test 10.');
Créez une base de données test_db> une table de test comme données pour la vérification. Insérez des données telles que l'ID, le nom et la description dans la colonne le cas échéant.
C'est la fin des préparatifs. À partir de là, vérifiez si vous pouvez réellement accéder et obtenir les données.
$ docker-compose build
$ docker-compose up -d
$ docker ps
OK si db_container est en cours d'exécution!
$ docker exec -it db_container sh
$ mysql -u root -p -h 127.0.0.1
Enter password: // .Entrez le mot de passe décrit dans env
mysql> //Si cela se produit, l'accès à Mysql est complet!
SHOW DATABASES;
Succès si la base de données préparée [test_db] existe!
USE test_db;
SHOW TABLES;
Si la table [test] créée existe, c'est OK!
SELECT * FROM test;
Si la liste des données enregistrées est affichée dans la table de test, elle est complétée sans aucun problème!
Si vous pouvez confirmer jusqu'à présent, vous pouvez accéder à MySQL sans aucun problème! Je vous remercie pour votre travail acharné!
mysql> exit
Bye
# //Si cela se produit, vous êtes déconnecté de MySQL et accédez au conteneur.
exit
docker-compose stop
Je vous remercie pour votre travail acharné! À ce stade, vous pouvez lancer MySQL sur le conteneur Docker et créer un environnement dans lequel vous pouvez insérer et accéder aux données! Maintenant que nous avons un conteneur d'application et une base de données pour fonctionner, nous allons créer un conteneur de serveur API pour exploiter les données la prochaine fois!
Comment créer un environnement de [TypeScript + Vue + Express + MySQL] avec Docker ~ Express ~
Comment créer un environnement pour [TypeScript + Vue + Express + MySQL] avec Docker ~ Vue Edition ~ Comment créer un environnement de [TypeScript + Vue + Express + MySQL] avec Docker ~ Sequelize ~
Recommended Posts