Compose docker avec des données mysql persistantes

Compose docker avec des données mysql persistantes

Il est important de garder les données persistantes pour les conteneurs exécutant des bases de données. Docker vous offre une option pour garder les fichiers de base de données persistants sur les volumes Docker ou le stockage des fichiers directement sur la machine hôte.

Utilisez l'une des options ci-dessous pour garder les données MySQL persistantes même après avoir recréé ou supprimé des conteneurs Docker.

Option 1 - Stockage des données MySQL sur les volumes Docker

Les volumes Docker sont le mécanisme préféré par le Docker pour stocker des données persistantes de conteneurs Docker. Vous pouvez facilement créer un volume Docker sur votre machine hôte et vous attacher à un conteneurs Docker.

Créons un fichier docker-compose sur votre système avec le contenu suivant.

composer docker.YML:

Version: Services «3»: DB: Image: MySQL: 5.7 Container_name: Environnement DB: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass
1234567891011121314151617Version: Services «3»: DB: Image: MySQL: 5.7 contener_name: Environnement DB: mysql_root_password: my_secret_password mysql_database: app_db mysql_user: db_user mysql_password: db_user_pass

La configuration ci-dessus a défini un volume de données nommé «DBDATA», qui est attaché au conteneur MySQL et monté sur / var / lib / mysql répertoire. Ceci est le répertoire par défaut utilisé par MySQL pour stocker tous les fichiers de données.

Ensuite, exécutez la commande ci-dessous pour lancer un conteneur Docker.

docker-compose up -d 

Sortir:

Création du réseau "db_default" avec le pilote par défaut Création de volume "db_dbdata" avec le pilote par défaut Création de DB… fait 

Vous pouvez afficher les volumes Docker en exécutant Commnad:

volume docker ls 

Option 2 - Stockage des données MySQL sur la machine hôte

Nous vous recommandons d'utiliser le volume de données au lieu de mettre des fichiers sur la machine hôte. Mais, si vous le souhaitez, vous pouvez conserver des fichiers de base de données sur la machine hôte. Dans tous les cas, le conteneur Docker est terminé, vous pouvez relancer le conteneur à l'aide des fichiers de données existants.

Créez un répertoire pour conserver vos fichiers de données MySQL. Je crée une structure de répertoire en dessous du répertoire actuel.

mkdir -p ./ Données / DB 

Puis configurez docker-compose.YML à utiliser ./ data / db comme volume pour stocker tous les fichiers créés par le serveur MySQL. Suivant Créer un fichier composé dans le répertoire actuel.

composer docker.YML:

Version: Services «3»: DB: Image: MySQL: 5.7 CONTERNER_NAME: Environnement DB: MySQL_ROOT_PASSWORD: MY_SECRET_PASSWORD MYSQL_DATABASE: APP_DB MYSQL_USER: DB_USER MYSQL_PASSWORD: DB_USER_PASS PORTS: - "6033: 3306" Volumes: - ./ data / db: / var / lib / mysql
123456789101112131415Version: Services «3»: DB: Image: MySQL: 5.7 CONTERNER_NAME: Environnement DB: MySQL_ROOT_PASSWORD: MY_SECRET_PASSWORD MYSQL_DATABASE: APP_DB MYSQL_USER: DB_USER MYSQL_PASSWORD: DB_USER_PASS PORTS: - "6033: 3306" Volumes: - ./ data / db: / var / lib / mysql

Après avoir créé un fichier, exécutez simplement la commande ci-dessous pour lancer un conteneur.

docker-compose up -d 

Sortir:

Création du réseau "db_default" avec le pilote par défaut Création de DB… fait 

Dans ce cas, le conteneur MySQL crée tous les fichiers sur la machine hôte sous ./ Data / DB répertoire. Pour afficher ces fichiers, exécutez simplement la commande.

ls -l ./ Données / DB DRWXR-X --- 2 Systemd-Coredump Systemd-Coredump 4096 JUL1 11:07 App_DB -RW-R ----- 1 Systemd-Coredump Systemd-Coredump 56 juil 1 11:07 Auto.CNF -RW ------- 1 Systemd-Coremp Systemd-Coredump 1676 1 juil 11:07 CA-Key.pem -rw-r - r-- 1 systemd-coredump systemd-coredump 1112 juil 1 11:07 ca.pem -rw-r - r-- 1 systemd-coredump systemd-coredump 1112 juil 1 11:07 client-cerred.pem -rw ------- 1 systemd-coredump systemd-coredump 1680 juil 1 11:07 Client-key.pem -rw-r ----- 1 systemd-coredump systemd-coredump 1346 juil 1 11:07 ib_buffer_pool -rw-r ----- 1 systemd-coredump systemd-coredump 50331648 juil 1 11:07 ib_logfile0 -rw- R ----- 1 Systemd-CoreUmp Systemd-Coredump 50331648 JUL1 11:07 IB_LOGFILE1 -RW-R ----- 1 Systemd-Coredump Systemd-CoreUmp 79691776 JUL 1 11:07 IBDATA1 -RW-R --- - 1 Systemd-Coredump Systemd-Coredump 12582912 JULO 1 11:07 IBTMP1 DRWXR-X --- 2 Systemd-Coredump Systemd-Coredump 4096 JUL 1 11:07 MySQL DRWXR-X --- 2 Systemd-Coredump Systemd-Coredump 4096 1 juillet 11:07 Performance_schema -rw ------- 1 systemd-coredump systemd-coredump 1680 juil 1 11:07 private_key.pem -rw-r - r-- 1 systemd-coredump systemd-coredump 452 juil 1 11:07 public_key.pem -rw-r - r-- 1 systemd-coredump systemd-coredump 1112 juil 1 11:07 Server.pem -rw ------- 1 systemd-coredump systemd-coredump 1680 juil 1 11:07 Server-Key.pem drwxr-x --- 2 systemd-coredump systemd-coredump 12288 juil 1 11:07 sys