Je vais faire fonctionner MariaDB et Phpmyadmin dans un conteneur Docker. Je vais réutiliser la configuration du dossier et tous les fichiers de la recette précédente - 02.
Les fichiers source peuvent être trouvés ici:
https://github.com/ikknd/docker-study dans le dossier recette-03
1. Modifier le fichier docker-compose.yml
version: "3.7"
services:
web:
image: nginx:1.17
ports:
- 80:80
volumes:
- /var/www/docker-study.loc/recipe-03/php:/var/www/myapp
- /var/www/docker-study.loc/recipe-03/docker/site.conf:/etc/nginx/conf.d/site.conf
depends_on:
- php
- mariadb
php:
image: php:7.2-fpm
volumes:
- /var/www/docker-study.loc/recipe-03/php:/var/www/myapp
- /var/www/docker-study.loc/recipe-03/docker/php.ini:/usr/local/etc/php/php.ini
depends_on:
- mariadb
mariadb:
image: mariadb:10.4
restart: always
volumes:
- mariadb-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: qwerty
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- 8000:80
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mariadb
depends_on:
- mariadb
volumes:
mariadb-data:
Ici, je fais plusieurs choses:
- créer du volume -
. C'est là que toutes les données db seront stockées, même si le conteneur est redémarré, les données seront là.mariadb-data
- variable d'environnement
- définit le mot de passe root pour le conteneur mariadb.MYSQL_ROOT_PASSWORD: qwerty
- variable d'environnement
- ajoute le champ de saisie "serveur" à la page de connexion de phpmyadmin (de cette façon, vous pouvez utiliser ce phpmyadmin avec une base de données MySQL externe, et pas seulement cette configuration locale)PMA_ARBITRARY=1
- variable d'environnement
- dit à phpmyadmin comment se connecter à mariadbPMA_HOST=mariadb
- mapper les ports pour
- cela mappe le port intérieur 80 de l'intérieur du conteneur au port 8000 sur ma machine hôtephpmyadmin - 8000:80
- "
"- empêche le conteneur de démarrer avant un autre conteneur, dont il dépenddepends_on
2. Accédez à /var/www/docker-study.loc/recipe-03/docker/ et exécutez:
docker-compose up -d
Je peux aller à:
myapp.loc/
- et toujours voir la page phpinfomyapp.loc:8000
- voir phpmyadmin, je peux me connecter en utilisant les informations d'identification root / qwerty3. Que faire si j'ai besoin que la base de données soit opérationnelle avec une base de données initiale à l'intérieur et non vide?
Ceci peut être réalisé en modifiant
mariadb
section avec:command: "mysqld --init-file /data/application/init.sql"
et
volumes:
- ./init.sql:/data/application/init.sql
- est un vidage de base de données existant.init.sql
- en utilisant des volumes, je copie ce fichier dans le conteneur
emplacement/data/application/init.sql
- en utilisant "
"commande - je dis à mysql de démarrer et d'importer init.sqlmysqld --init-file
4. Après avoir exécuté DB, comment exporter / importer DB?
Pour voir la liste des conteneurs et connaître l'ID du conteneur ou le nom du conteneur mariadb:
docker container ls
Importer:
docker exec -i docker_mariadb_1 mysql -uroot -pqwerty DB_NAME < your_local_db_dump.sql
Exporter:
docker exec -i docker_mariadb_1 mysqldump -uroot -pqwerty DB_NAME > your_local_db_dump.sql
Aucun commentaire:
Enregistrer un commentaire