Comment configurer un environnement MySQL et PhpMyAdmin sous Docker? La réponse dans ce guide...
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:
- Configuration du projet avec un serveur Nginx et PHP-FPM. Accéder à l'article.
- Configuration du projet docker avec Mysql et phpMyAdmin.
- 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.
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.
Liens utiles:
Article précédent Article suivant
Commentaires
Marc
Ajouter un commentaire