PHPMyAdmin est une interface d'administration populaire pour les bases de données MySQL et MariaDB. Il vous permet d'interagir avec vos schémas, tables et données à l'aide d'un navigateur Web.
Le projet a une image Docker officielle qui simplifie le déploiement dans des environnements conteneurisés. Voici comment utiliser l'image pour lancer rapidement une nouvelle instance PHPMyAdmin.
Utilisation de base
L'installation la plus simple permet à un conteneur PHPMyAdmin de se connecter à n'importe quel serveur de base de données accessible :
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin
Cette commande démarre PHPMyAdmin sur le port 8080. Visitez localhost:8080
dans votre navigateur pour voir l'écran de connexion. La présence du PMA_ARBITRARY
La variable d'environnement entraîne l'affichage d'un formulaire de connexion au serveur. Spécifiez les informations d'identification de l'hôte et de l'utilisateur de votre base de données MySQL ou MariaDB pour vous connecter.
Lorsque vous utilisez cette méthode, vous verrez normalement un avertissement PHPMyAdmin indiquant que "certaines fonctionnalités étendues ont été désactivées". Cela se produit lorsque le serveur auquel vous êtes connecté n'a pas de base de données appelée phpmyadmin
. PHPMyAdmin utilise ce schéma pour stocker ses propres données de configuration.
Suivez le lien de l'avertissement pour "Créer une base de données" pour terminer l'installation. Votre compte d'utilisateur aura besoin d'une autorisation pour créer de nouvelles bases de données sur le serveur.
Préréglage d'un serveur
Au lieu d'autoriser un accès arbitraire, vous pouvez démarrer le conteneur PHPMyAdmin avec une connexion serveur préconfigurée. Fournissez le PMA_HOST
et PMA_PORT
variables d'environnement au lieu de PMA_ARBITRARY
:
docker run -d --name phpmyadmin -e PMA_HOST=mysql.example.com -e PMA_PORT=33060 -p 8080:80 phpmyadmin
PMA_PORT
est facultatif. Il utilisera la valeur MySQL par défaut de 3306 lorsqu'aucune valeur n'est fournie.
Démarrer le conteneur avec ces variables obligera PHPMyAdmin à travailler avec le mysql.example.com
serveur. Vous serez invité à entrer un nom d'utilisateur et un mot de passe sur l'écran de connexion, mais vous n'aurez pas besoin de fournir de nom d'hôte.
PHPMyAdmin peut également être configuré pour présenter plusieurs options de serveur. Fournissez PMA_HOSTS
et PMA_PORTS
sous forme de listes de connexions séparées par des virgules pour activer cette fonctionnalité.
Utiliser un conteneur MySQL Docker
Un autre cas d'utilisation courant est la connexion à un serveur MySQL ou MariaDB exécuté dans un conteneur Docker séparé. Vous pouvez soit exposer le serveur de base de données sur un port, soit connecter les deux conteneurs à un réseau Docker partagé. Dans les deux cas, utilisez le PMA_HOST
et PMA_PORT
les variables d'environnement indiqueront à PHPMyAdmin comment se connecter au serveur.
Les anciens liens Docker sont également pris en charge :
docker run -d --name phpmyadmin --link my_mysql_container:db -p 8080:80 phpmyadmin
Cette commande vous permet de connecter PHPMyAdmin au my_mysql_container
conteneur sans configurer manuellement les liens réseau. Cette fonctionnalité est obsolète dans Docker, il est donc préférable de passer aux commandes réseau :
docker network create phpmyadmin docker network connect phpmyadmin mysql_container_name --ip 172.17.0.1 docker network connect phpmyadmin phpmyadmin_container_name
Comme alternative, vous pouvez démarrer PHPMyAdmin avec une connexion réseau préconfigurée en utilisant le --network
de Docker drapeau :
docker run -d --name phpmyadmin --network phpmyadmin -p 8080:80 phpmyadmin
Désormais, PHPMyAdmin pourra accéder au conteneur MySQL via le réseau partagé. Définissez le PMA_HOST
variable d'environnement à 172.17.0.1
lorsque vous démarrez le conteneur.
Simplifier le déploiement avec Docker Compose
L'écriture d'un fichier Docker Compose simplifie les déploiements non triviaux. Vous pouvez afficher un nouveau conteneur PHPMyAdmin de manière reproductible en utilisant le docker-compose up -d
commande.
Voici un docker-compose.yml
pour PHPMyAdmin en mode de connexion arbitraire :
version: "3" services: phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_ARBITRARY=1 restart: unless-stopped
Docker Compose vous aide également à créer une pile avec une nouvelle installation de base de données MySQL et un conteneur PHPMyAdmin :
version: "3" service: mysql: image: mysql:latest expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_HOST: mysql - PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD} restart: unless-stopped volumes: - mysql
Exécutez docker-compose up -d
pour mettre en place MySQL avec un conteneur PHPMyAdmin entièrement en réseau. PMA_HOST
de PHPMyAdmin la variable est définie sur mysql
, faisant référence au nom du service MySQL. Docker Compose définit automatiquement les noms d'hôte pour qu'ils correspondent aux noms de service, permettant à PHPMyAdmin de se connecter à MySQL en utilisant le réseau partagé.
Configuration de l'installation
L'image PHPMyAdmin Docker prend en charge un fichier de configuration fourni par l'utilisateur que vous pouvez injecter via un volume Docker. Le chemin est /etc/phpmyadmin/config.user.inc.php
:
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 -v my-config-file.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin
Vous pouvez ajouter n'importe laquelle des variables de configuration prises en charge par PHPMyAdmin.
L'image prend également en charge les variables d'environnement pour de nombreux paramètres courants. Ceux-ci incluent MEMORY_LIMIT
, UPLOAD_LIMIT
et MAX_EXECUTION_TIME
, chacune correspondant à des valeurs PHP INI qui pourraient devoir être ajustées si vous utilisez des requêtes longues ou compliquées.
Valeurs sensibles, telles que PMA_HOST
, PMA_PASSWORD
, et MYSQL_ROOT_PASSWORD
, peuvent être injectés à l'aide de secrets Docker au lieu de variables d'environnement simples. Ajouter _FILE
au nom de la variable, puis définissez la valeur sur un chemin à l'intérieur du conteneur qui fournit la valeur réelle.
docker run -d --name phpmyadmin -e PMA_HOST_FILE=/run/secrets/pma_host -p 8080:80 phpmyadmin
Résumé
PHPMyAdmin est l'un des utilitaires d'administration MySQL les plus populaires et les plus connus. L'installation sans système d'exploitation ajoute plusieurs dépendances à votre système, regroupant Apache et PHP avec le code source de l'application.
L'installation de PHPMyAdmin dans Docker vous offre un environnement isolé qui peut être créé, remplacé et supprimé à l'aide de quelques commandes Docker CLI. L'image officielle peut se connecter à n'importe quel serveur MySQL accessible depuis votre hôte, y compris les bases de données exécutées dans d'autres conteneurs Docker.
Des conseils plus détaillés sur l'exécution et l'utilisation de PHPMyAdmin sont disponibles dans la documentation officielle. Il est particulièrement important de consulter le guide de sécurité afin de ne pas exposer involontairement votre base de données à un risque d'attaque externe. Vous devez également tenir compte des meilleures pratiques de sécurité Docker lors du déploiement de PHPMyAdmin dans un conteneur exposé au monde extérieur.