Im vorherigen Artikel habe ich einen Container für die App erstellt. Dieses Mal werden wir einen MySQL-Container auf Docker erstellen und die eigentliche Dateneingabe und den Zugriff durchführen.
Erstellen einer Umgebung für [TypeScript + Vue + Express + MySQL] mit Docker ~ Vue Edition ~
Wir werden einen Datenbankcontainer separat von dem zuletzt erstellten App-Container erstellen. Die endgültige Verzeichnisstruktur lautet wie folgt.
├─ app
├─ db
│ └─ conf
│ └─ my.cnf //hinzufügen
│ └─ init_db
│ └─ test.sql //hinzufügen
├─ docker
│ └─ app
│ └─ db
│ └─ Dockerfile //hinzufügen
├─ .env //hinzufügen
└─ docker-compose.yml //Bearbeiten
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
#Bearbeiten Sie den vorherigen Anwendungscontainer nicht
#Fügen Sie Folgendes hinzu
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 #Binden Sie die MySQL-Einstellungen
- ./db/init_db:/docker-entrypoint-initdb.d #Binden Sie die SQL-Datei für die erste Dateneingabe
- test_data:/var/lib/mysql #Binden Sie persistierte Daten
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE} #Lesen Sie verschiedene Einstellungen aus den Container-Umgebungsvariablen
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ="Asia/Tokyo"
volumes:
test_data: #Datenpersistenz
Die Einstellung zum gleichzeitigen Starten des App-Containers und des DB-Containers ist oben abgeschlossen. Der Datenbankname, der Benutzername und das Kennwort, auf die zugegriffen werden soll, werden unter Bezugnahme auf die Umgebungsvariablen des Containers aus [Umgebung] ausgeführt.
/docker/db/Dockerfile
FROM mysql
EXPOSE 3306
CMD ["mysqld"]
Stellen Sie den Port auf 3306 ein.
db/conf/my.cnf
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
Stellen Sie den Zeichencode von MySQL ein.
.env
MYSQL_DATABASE=test_db //Legen Sie den später beschriebenen Datenbanknamen fest
MYSQL_USER={Legen Sie einen geeigneten Benutzernamen fest}
MYSQL_PASSWORD={Legen Sie das Passwort für den MySQL-Zugriff fest}
MYSQL_ROOT_PASSWORD={Legen Sie das Passwort für den MySQL-Zugriff fest}
Auf das, was Sie hier festlegen, wird beim Start des Containers verwiesen und in der Umgebungsvariablen des Containers festgelegt. Das Anmeldekennwort ist das oben festgelegte Kennwort.
* Schließen Sie .env-Dateien mit .gitignore aus, damit sie nicht in Git enthalten sind. Drücken Sie nicht, wenn Sie einen Fehler machen! </ 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', 'Testdaten 1.');
INSERT INTO test (id, name, description) VALUES (2, 'test2', 'Testdaten 2.');
INSERT INTO test (id, name, description) VALUES (3, 'test3', 'Testdaten 3.');
INSERT INTO test (id, name, description) VALUES (4, 'test4', 'Testdaten 4.');
INSERT INTO test (id, name, description) VALUES (5, 'test5', 'Testdaten 5.');
INSERT INTO test (id, name, description) VALUES (6, 'test6', 'Testdaten 6.');
INSERT INTO test (id, name, description) VALUES (7, 'test7', 'Testdaten 7.');
INSERT INTO test (id, name, description) VALUES (8, 'test8', 'Testdaten 8.');
INSERT INTO test (id, name, description) VALUES (9, 'test9', 'Testdaten 9.');
INSERT INTO test (id, name, description) VALUES (10, 'test10', 'Testdaten 10.');
Erstellen Sie eine test_db-Datenbank> Testtabelle als Daten zur Überprüfung. Fügen Sie nach Bedarf Daten wie ID, Name und Beschreibung in die Spalte ein.
Dies ist das Ende der Vorbereitungen. Überprüfen Sie von hier aus, ob Sie tatsächlich auf die Daten zugreifen und diese abrufen können.
$ docker-compose build
$ docker-compose up -d
$ docker ps
OK wenn db_container läuft!
$ docker exec -it db_container sh
$ mysql -u root -p -h 127.0.0.1
Enter password: // .Geben Sie das in env beschriebene Passwort ein
mysql> //Wenn dies herauskommt, ist der Zugriff auf MySQL vollständig!
SHOW DATABASES;
Erfolg, wenn die vorbereitete Datenbank [test_db] existiert!
USE test_db;
SHOW TABLES;
Wenn die erstellte [Test] -Tabelle vorhanden ist, ist dies in Ordnung!
SELECT * FROM test;
Wenn die Liste der gespeicherten Daten in der Testtabelle angezeigt wird, ist sie problemlos abgeschlossen!
Wenn Sie dies bisher bestätigen können, können Sie problemlos auf MySQL zugreifen! Danke für deine harte Arbeit!
mysql> exit
Bye
# //In diesem Fall werden Sie von MySQL abgemeldet und greifen auf den Container zu.
exit
docker-compose stop
Danke für deine harte Arbeit! Zu diesem Zeitpunkt können Sie MySQL auf dem Docker-Container starten und eine Umgebung erstellen, in die Sie Daten einfügen und darauf zugreifen können! Jetzt, da wir einen App-Container und eine Datenbank haben, um tatsächlich zu arbeiten, werden wir einen API-Server-Container erstellen, um Daten beim nächsten Mal zu betreiben!
Erstellen einer Umgebung von [TypeScript + Vue + Express + MySQL] mit Docker ~ Express ~
Erstellen einer Umgebung für [TypeScript + Vue + Express + MySQL] mit Docker ~ Vue Edition ~ So erstellen Sie mit Docker ~ Sequelize ~ eine Umgebung aus [TypeScript + Vue + Express + MySQL]
Recommended Posts