Comment configurer un environnement MySQL et PhpMyAdmin sous Docker? La réponse dans ce guide... :D

Configurer un environnement Docker peut s'avérer compliqué. Je vous explique donc ici comment configurer MySQL avec PhpMyAdmin dans ce guide. :)

Je continuerai ici le travail effectué dans la partie 1, où je vous ai expliqué comment configurer un environnement Docker pour un projet Symfony.

Prérequis

  • PHP 7.2.5 ou supérieur
  • Docker
  • Connaitre les concepts Docker
  • Système Mac ou Linux (pour Windows, je vous laisse adapter les commandes ;))
  • Une configuration Docker Compose avec un service PHP fonctionnel.

Démarrage

Cet article concerne la deuxième partie d'un guide complet pour configurer un environnement Docker avec un projet Symfony fonctionnant sous PHP-FPM, Nginx, MySQL et phpMyAdmin, organisé en trois parties:

  1. Configuration du projet avec un serveur Nginx et PHP-FPM. Accéder à l'article.
  2. Configuration du projet docker avec Mysql et phpMyAdmin.
  3. Migration la base de donnée SQLite vers Mysql.

Pour rappel, le fichier docker-compose.yml contient ceci:

version: '3.7'
services:
  php-fpm:
    container_name: php-fpm
    build: ./docker/php-fpm
    ports:
      - 9000:9001
    volumes:
      - .:/app/:cached
    networks:
      - site

  nginx:
    container_name: nginx
    build: ./docker/nginx
    ports:
      - "8000:80"
    depends_on:
      - php-fpm
    networks:
      - site
    volumes:
      - .:/app/:cached
networks:
  site:

Création du service MySQL

Un nouveau service mysql sera créé dans le fichier docker-compose.yml où l'image MySQL version 5.7 est utilisée.

Pour cela, ajoutez les lignes suivantes dans le fichier docker-compose.yml :

  mysql:
    image: mysql:5.7
    container_name: mysql
    command: ["--default-authentication-plugin=mysql_native_password"]
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password0
      MYSQL_DATABASE: symfony-demo
      MYSQL_USER: symfony-demo
      MYSQL_PASSWORD: symfony-demo
    networks:
      - mysql
networks:
  mysql:
volumes:
  db_data:

Une base symfony-demo est initialisé à partir de l'image Docker de MySQL.

Il faut également ajouter les lignes suivantes dans le service php-fpm:

  php-fpm:
    depends_on:
      - mysql
    networks:
      - mysql

Cette configuration sera très utile plus tard lorsque la base MySQL sera exploitée dans le projet.

On indique tout simplement à Docker que le service php-fpm dépend du service mysql.

networks permet de définir différents réseaux pour les services. Cela est utile si l'on souhaite une configuration poussée des réseaux mais l'on peut tout à fait mettre tous les services sur le même réseau.
volumes permet d'organiser différents chemins pour accéder à la configuration docker-compose.

Création du service PhpMyAdmin

Un nouveau service phpmyadmin sera également créé et sera basé sur l'image phpmyadmin.

Pour cela, ajoutez les lignes suivantes dans le fichier docker-compose.yml :

  phpmyadmin:
    depends_on:
      - mysql
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    links:
        - mysql
    restart: always
    ports:
      - 8080:80
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: password0
    networks:
      - site
      - mysql

L'image phpmyadmin est configuré de manière à ce:

  • qu'il dépend du service mysql via un lien direct (mot clé links)
  • que ses variables d'environnement sont basées sur la configuration du service mysql
  • que le port 8080 soit exposé pour accéder à PhpMyAdmin.

Test de la configuration

Maintenant que le fichier de conguration de Docker posséde les services MySQL et PhpMyAdmin, on peut tester leur fonctionnement.

Pour cela, exécutez la commande suivante:

docker-compose up -d

Testez maintenant le résultat sur le lien http://localhost:8080. Votre base de donnée symfony-demo peut être gérer via PhpMyAdmin.

PhpMyAdmin

Et la suite

Voici la fin de cette partie. :)

Il ne reste plus qu'a migrer la base SQLite vers MySQL, afin de l'utiliser dans le projet.

Je vous invite maintenant à lire la partie 3 pour migrer la base de donnée.

Je vous dis à plus pour le prochain article. xD


Liens utiles:

Article précédent Article suivant


Ajouter un commentaire