GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment exécuter PHPMyAdmin dans un conteneur Docker

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.


Docker
  1. Comment exécuter un programme dans un conteneur Docker ?

  2. Comment exécuter MySQL dans un conteneur Docker

  3. Comment exécuter une commande sur un conteneur Docker en cours d'exécution

  4. Comment attribuer une adresse IP statique à un conteneur Docker

  5. Comment répertorier les conteneurs Docker

Comment exécuter la pile ELK sur Docker Container

Comment se connecter en SSH à un conteneur Docker et exécuter des commandes

Comment exécuter une application .NET dans Docker

Comment exécuter Grafana dans un conteneur Docker

Comment configurer un conteneur Apache Docker

Comment exécuter des conteneurs Docker