MariaDB + Phpmyadmin + Docker: Exécution d'une base de données locale - How to do

The best way to stay up to date with technology

demo-image
o4ty3xxo

MariaDB + Phpmyadmin + Docker: Exécution d'une base de données locale

Partagez l'article
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 - 
    mariadb-data
    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à.
  • variable d'environnement 
    MYSQL_ROOT_PASSWORD: qwerty
     - définit le mot de passe root pour le conteneur mariadb.
  • variable d'environnement 
    PMA_ARBITRARY=1
     - 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)
  • variable d'environnement 
    PMA_HOST=mariadb
     - dit à phpmyadmin comment se connecter à mariadb
  • mapper les ports pour 
    phpmyadmin - 8000:80
     - cela mappe le port intérieur 80 de l'intérieur du conteneur au port 8000 sur ma machine hôte
  • "
    depends_on
    "- empêche le conteneur de démarrer avant un autre conteneur, dont il dépend

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 phpinfo
myapp.loc:8000
 - voir phpmyadmin, je peux me connecter en utilisant les informations d'identification root / qwerty

3. 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
  • init.sql
     - est un vidage de base de données existant.
  • en utilisant des volumes, je copie ce fichier dans le conteneur 
    /data/application/init.sql
     emplacement
  • en utilisant "
    mysqld --init-file
    "commande - je dis à mysql de démarrer et d'importer init.sql

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
أختر أكثر من طريقة للتعليق!!

techzone

example

badreddine ghalyمايو 16, 2020

Formulaire de contact

Nom

E-mail *

Message *

الصفحات