Comment installer phpMyAdmin avec Docker Compose
Obtenez phpMyAdmin opérationnel avec Docker sans effort : notre guide fournit tous les éléments essentiels pour une configuration rapide et fluide.
Depuis plus de deux décennies, phpMyAdmin est la solution incontournable pour gérer les bases de données MySQL et MariaDB.
Il s'agit d'un outil gratuit et open source écrit en PHP qui permet aux utilisateurs de gérer diverses activités de base de données, telles que la création, la modification et la suppression de bases de données ; gérer les tables, les champs et les index ; exécuter des instructions SQL ; et gérer les utilisateurs et les autorisations via une interface Web pratique.
Cependant, pour l'installer, vous devez installer PHP et configurer le support php-fpm avec votre serveur Web, qu'il s'agisse de NGINX, Apache ou autre. Heureusement, Docker simplifie ce processus, vous permettant de configurer phpMyAdmin rapidement, en quelques minutes. Cela vous permet de vous concentrer immédiatement sur la gestion de vos bases de données MySQL/MariaDB sans vous enliser dans les configurations initiales.
Ce guide vous guidera dans la configuration d'un conteneur phpMyAdmin à l'aide de Docker Compose et couvrira chaque scénario pour garantir qu'il se connecte correctement à votre base de données MySQL/MariaDB. Alors commençons !
Conditions préalables
Avant de procéder à l'installation, assurez-vous que Docker est installé sur votre système. Mais si vous ne l’avez pas, n’ayez crainte ; l'un des guides suivants vous aidera à l'obtenir rapidement. Choisissez la distribution que vous utilisez dans l'un des liens suivants : Ubuntu 24.04, Debian 12, Arch, Alma/Rocky, Fedora, Linux Mint 22, Pop!_OS 22.04 ou Raspberry Pi OS.
L'autre composant essentiel est Docker Compose. Les versions récentes de Docker incluent désormais Docker Compose en installant le package « docker-compose-plugin ». Alors, installez-le s’il n’est pas déjà dans votre configuration.
Cependant, si vous préférez, vous pouvez l'obtenir séparément en utilisant les deux commandes ci-dessous. Dans ce cas, n'oubliez pas que lors de l'exécution de l'outil, tapez « docker-compose
» au lieu de « docker compose
. »
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Exécutez ensemble les conteneurs phpMyAdmin et MySQL
Il s'agit du scénario le plus courant lorsque MySQL démarre avec un conteneur phpMyAdmin associé pour administrer la base de données. Pour y parvenir, la première étape consiste à créer le répertoire du projet dans lequel sera placé notre fichier de déploiement Docker Compose.
Ensuite, passez-y ; à partir de maintenant, vous devez exécuter toutes les commandes plus bas dans ce guide à partir de cet emplacement.
mkdir phpmyadmin
cd phpmyadmin
Créez un fichier nommé « docker-compose.yml ». Ce fichier définira les services et les volumes de nos instances phpMyAdmin et MySQL, indiquant à Docker quoi faire et comment configurer le déploiement.
Ouvrez votre éditeur de texte préféré et collez-y le contenu suivant :
nano docker-compose.yaml
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
ports:
- 8080:80
environment:
- PMA_ARBITRARY=0
- PMA_HOST=db
restart: unless-stopped
depends_on:
- db
db:
image: mysql:latest
container_name: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: mypassword
restart: unless-stopped
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
Comme vous pouvez le constater, le déploiement est simple. Cela implique d'exécuter deux conteneurs : un pour un serveur MySQL et un autre pour l'application phpMyAdmin elle-même. Passons en revue les paramètres clés.
Définir « PMA_ARBITRARY » sur 0 supprime l'option permettant de saisir un hôte personnalisé sur l'écran de connexion de phpMyAdmin. En effet, nous utilisons une « base de données » prédéfinie spécifique à laquelle le conteneur phpMyAdmin doit se connecter.
Le plus important de la partie service « phpmyadmin » est « PMA_HOST ». Il spécifie le nom d'hôte du serveur MySQL auquel phpMyAdmin doit se connecter.
Cependant, dans notre configuration, puisque MySQL s'exécute comme un autre conteneur au sein du même déploiement Docker, nous nous y connectons en faisant référence à son nom de service, que nous avons défini sur « db ».
Dans la partie serveur « db » qui déploie le serveur MySQL, assurez-vous de modifier la valeur de l'option « MYSQL_ROOT_PASSWORD » en une valeur sécurisée. Bien entendu, nous assurons également la persistance des données MySQL en créant un volume Docker nommé.
Nous sommes tous prêts ! Tapez la commande suivante pour démarrer et exécuter le conteneur en arrière-plan :
docker compose up -d
Le téléchargement des images Docker commencera. Vous devriez voir un écran similaire à celui ci-dessous, vous informant que votre installation phpMyAdmin/MySQL a été déployée avec succès et que les conteneurs sont opérationnels.
Maintenant, ouvrez votre navigateur et accédez à « http://localhost:8080 » ou « http://
Pour vous connecter, utilisez le nom d'utilisateur « root » et le mot de passe définis dans votre fichier Docker Compose comme valeurs de l'option « MYSQL_ROOT_PASSWORD ». C'est ça! phpMyAdmin se connectera à l'instance MySQL et sera prêt à vous servir.
Cependant, en fonction de vos besoins, examinons maintenant quelques autres cas d’utilisation de phpMyAdmin que vous pourriez rencontrer.
Connectez phpMyAdmin à MySQL installé sur l'hôte
Mais que se passe-t-il si votre serveur MySQL/MariaDB est installé directement sur l'hôte et non déployé en tant que conteneur Docker ? Dans ce cas, le conteneur phpMyAdmin ne peut pas le voir directement car il se trouve sur un réseau Docker distinct, isolé du réseau de l'hôte.
Par conséquent, pour connecter phpMyAdmin à MySQL installé localement, nous devons effectuer quelques configurations supplémentaires, à la fois du côté de phpMyAdmin et de MySQL. Le fichier final « docker-compose.yml » de phpMyAdmin devrait ressembler à ceci :
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
ports:
- 8080:80
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- PMA_ARBITRARY=0
- PMA_HOST=host.docker.internal
restart: unless-stopped
L'élément clé ici est l'option « host.docker.internal:host-gateway ». C'est un nom DNS spécial reconnu par Docker. Il se résout en une adresse IP qui est acheminée vers la machine hôte, ce qui la rend particulièrement utile lorsque vous avez besoin d'un conteneur pour accéder aux services exécutés sur l'hôte. Plus d’informations à ce sujet – ici.
De plus, pour l'option « PMA_HOST », spécifiez ce nom DNS spécifique à Docker, « host.docker.internal ».
Du côté MySQL, assurez-vous que l'option « bind-address » est définie sur « 0.0.0.0 » et non sur « 127.0.0.1 ». dans le fichier de configuration MySQL. Cela permet à MySQL d'accepter les connexions depuis n'importe quelle adresse IP.
Une fois les modifications effectuées, n'oubliez pas de redémarrer le serveur MySQL pour vous assurer qu'elles prennent effet. Vous pouvez exécuter la commande ci-dessous pour vérifier que tout est correctement configuré. Vérifiez la sortie pour voir si la ligne MySQL indique « 0.0.0.0 ».
netstat -tulnp
Maintenant, démarrez le conteneur phpMyAdmin à l'aide de la commande « docker-compose up -d » et connectez-vous en utilisant le compte root de votre serveur MySQL.
Pour vous connecter avec succès, assurez-vous que l'utilisateur root ou tout autre utilisateur que vous utilisez pour vous connecter au serveur MySQL via phpMyAdmin dispose des autorisations de connexion à distance activées. Pour plus de détails sur la gestion des utilisateurs MySQL, consultez notre guide sur le sujet.
Remarque importante : les paramètres mentionnés ci-dessus rendront votre serveur MySQL accessible depuis Internet ou des réseaux externes. Ceci n’est généralement pas sûr et constitue une mauvaise pratique de sécurité.
Pour vous protéger contre les tentatives d'accès non autorisées, il est important de configurer un pare-feu qui autorise uniquement les connexions à partir de sources spécifiques. réseaux, comme votre réseau interne, et bloque tous les autres.
Connectez phpMyAdmin à un conteneur MySQL existant
Le dernier scénario est celui où nous avons déjà déployé un conteneur MySQL/MariaDB et que nous souhaitons ajouter phpMyAdmin pour administrer notre base de données via une interface graphique pratique. Pour y parvenir, une seule condition doit être remplie : les deux conteneurs doivent partager le même réseau Docker (pour être visibles l'un par l'autre).
Nous devons donc d’abord créer le réseau Docker que les deux conteneurs partageront. Vous pouvez facilement en créer un nommé, par exemple, « mysql_network » en exécutant la commande suivante :
docker network create mysql_network
Pour afficher une liste des réseaux Docker disponibles, exécutez la commande suivante :
docker network ls
Maintenant, arrêtez le conteneur MySQL et modifiez son déploiement en ajoutant la partie service :
networks:
- mysql_network
Et définissez le réseau à la fin. La version finale devrait ressembler à ceci :
services:
db:
image: mysql:latest
container_name: mysql
volumes:
- dbdata:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: mypassword
ports:
- 3306:3306
restart: unless-stopped
networks:
- mysql_network
volumes:
dbdata:
networks:
mysql_network:
name: mysql_network
external: true
Faites de même pour le conteneur phpMyAdmin et, bien sûr, assurez-vous de spécifier correctement le nom du service MySQL dans l'option « PMA_HOST » :
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
ports:
- 8080:80
environment:
- PMA_ARBITRARY=0
- PMA_HOST=db
restart: unless-stopped
networks:
- mysql_network
networks:
mysql_network:
name: mysql_network
external: true
Désormais, les deux conteneurs partageront le même réseau, le « mysql_network » que nous avons créé précédemment. Ils auront donc une visibilité les uns sur les autres.
Enfin, exécutez les conteneurs et vous devez vous connecter de manière transparente à votre instance MySQL via phpMyAdmin.
Conclusion
L'intégration de phpMyAdmin avec Docker offre une approche rationalisée et efficace de la gestion des bases de données MySQL/MariaDB.
Que vous déployiez phpMyAdmin aux côtés de MySQL dans des conteneurs Docker, que vous vous connectiez à un serveur MySQL sur l'hôte ou que vous intégriez un conteneur MySQL existant, notre guide vous donne toutes les réponses dont vous avez besoin pour y parvenir.
Cela permet de gagner un temps précieux et de réduire le risque d'erreurs de configuration, vous permettant ainsi de vous concentrer davantage sur la gestion de la base de données et moins sur les complexités de configuration.
Pour plus d'informations sur les options disponibles lors de la création de votre déploiement, consultez la documentation phpMyAdmin et MySQL sur Docker Hub.
Merci pour votre temps ! Si vous avez des questions, veuillez les laisser dans la section commentaires ci-dessous.