Cómo ejecutar PHPMyAdmin en un contenedor Docker

PHPMyAdmin es una interfaz de administración popular para bases de datos MySQL y MariaDB. Le permite interactuar con sus esquemas, tablas y datos utilizando un navegador web.

El proyecto tiene una imagen oficial de Docker que simplifica la implementación en entornos en contenedores. A continuación, se explica cómo usar la imagen para lanzar rápidamente una nueva instancia de PHPMyAdmin.

→ Índice de contenidos

Uso basico

La instalación más simple permite que un contenedor PHPMyAdmin se conecte a cualquier servidor de base de datos accesible:

docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin

Este comando inicia PHPMyAdmin en el puerto 8080. Visite localhost:8080 en el navegador para mostrar la pantalla de inicio de sesión. La presencia del PMA_ARBITRARY la variable de entorno hace que se muestre un formulario de conexión al servidor. Especifique las credenciales de host y usuario de su base de datos MySQL o MariaDB para iniciar sesión.

Cuando utilice este método, normalmente verá una advertencia de PHPMyAdmin que indica que "se han desactivado algunas funciones extendidas". Esto ocurre cuando el servidor al que está conectado no tiene una base de datos llamada phpmyadmin. PHPMyAdmin usa este esquema para almacenar sus datos de configuración.

Siga el enlace de advertencia para "Crear una base de datos" para completar la instalación. Su cuenta de usuario necesitará permiso para crear nuevas bases de datos en el servidor.

Preconfigurar un servidor

Como alternativa a permitir el acceso arbitrario, puede iniciar el contenedor PHPMyAdmin con una conexión de servidor preconfigurada. Proporcionar la PMA_HOST Y PMA_PORT variables de entorno en lugar de PMA_ARBITRARY:

docker run -d --name phpmyadmin -e PMA_HOST=mysql.example.com -e PMA_PORT=33060 -p 8080:80 phpmyadmin

PMA_PORT es opcional. Utilizará el valor predeterminado de MySQL de 3306 cuando no se proporcione ningún valor.

Iniciar el contenedor con estas variables obligará a PHPMyAdmin a trabajar con el mysql.example.com servidor. Se le pedirá un nombre de usuario y una contraseña en la pantalla de inicio de sesión, pero no será necesario que proporcione un nombre de host.

PHPMyAdmin también se puede configurar para presentar múltiples opciones de servidor. Suministro PMA_HOSTS Y PMA_PORTS como listas de conexiones separadas por comas para habilitar esta funcionalidad.

Usando un contenedor de MySQL Docker

Otro caso de uso común es conectarse a un servidor MySQL o MariaDB que se ejecuta en un contenedor Docker separado. Puede exponer el servidor de la base de datos en un puerto o conectar ambos contenedores a una red Docker compartida. De cualquier manera, use el PMA_HOST Y PMA_PORT Las variables de entorno le dirán a PHPMyAdmin cómo conectarse al servidor.

Los enlaces de Docker heredados también son compatibles:

docker run -d --name phpmyadmin --link my_mysql_container:db -p 8080:80 phpmyadmin

Este comando le permite conectar PHPMyAdmin al my_mysql_container contenedor sin configurar manualmente las conexiones de red. Esta función está obsoleta en Docker, por lo que es mejor cambiar a los comandos de red:

docker network create phpmyadmin
docker network connect phpmyadmin mysql_container_name --ip 172.17.0.1
docker network connect phpmyadmin phpmyadmin_container_name

Alternativamente, puede iniciar PHPMyAdmin con una conexión de red preconfigurada usando Docker's --network bandera:

docker run -d --name phpmyadmin --network phpmyadmin -p 8080:80 phpmyadmin

Ahora PHPMyAdmin podrá acceder al contenedor MySQL a través de la red compartida. Selecciona el PMA_HOST variable de entorno a 172.17.0.1 al poner en marcha el contenedor.

Simplifique la implementación con Docker Compose

Escribir un archivo Docker Compose simplifica las implementaciones no triviales. Puede hacer que un nuevo contenedor PHPMyAdmin aparezca repetidamente usando el docker-compose up -d mando.

Aquí hay un docker-compose.yml para PHPMyAdmin en modo de conexión arbitrario:

version: "3"

services:
  phpmyadmin:
    image: phpmyadmin:latest
    ports:
        - 8080:80
    environment:
        - PMA_ARBITRARY=1
    restart: unless-stopped

Docker Compose también le ayuda a crear una pila con una nueva instalación de base de datos MySQL y un contenedor 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

Correr docker-compose up -d para hacer que MySQL aparezca con un contenedor PHPMyAdmin completamente en red. PHPMyAdmin's PMA_HOST la variable se establece en mysql, refiriéndose al nombre del servicio MySQL. Docker Compose establece automáticamente los nombres de host para que coincidan con los nombres de los servicios, lo que permite que PHPMyAdmin se conecte a MySQL mediante la red compartida.

Configurar la instalación

La imagen de PHPMyAdmin Docker admite un archivo de configuración proporcionado por el usuario que se puede insertar a través de un volumen de Docker. El camino es /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

Puede agregar cualquiera de las variables de configuración admitidas por PHPMyAdmin.

La imagen también admite variables de entorno para muchas configuraciones comunes. Éstas incluyen MEMORY_LIMIT, UPLOAD_LIMIT Y MAX_EXECUTION_TIME, cada uno de los cuales corresponde a valores PHP INI que pueden necesitar cambiarse si está utilizando consultas complicadas o de larga duración.

Valores sensibles, como PMA_HOST, PMA_PASSWORD, Y MYSQL_ROOT_PASSWORD, se puede inyectar utilizando secretos de Docker en lugar de simples variables de entorno. Para agregar _FILE al nombre de la variable, luego establezca el valor en una ruta dentro del contenedor que proporcione el valor real.

docker run -d --name phpmyadmin -e PMA_HOST_FILE=/run/secrets/pma_host -p 8080:80 phpmyadmin

Resumen

PHPMyAdmin es una de las utilidades de administración de MySQL más populares y conocidas. La instalación completa agrega varias dependencias a su sistema, agrupando Apache y PHP junto con el código fuente de la aplicación.

La instalación de PHPMyAdmin en Docker le brinda un entorno aislado que puede crearse, reemplazarse y eliminarse mediante un puñado de comandos de la CLI de Docker. La imagen oficial puede conectarse a cualquier servidor MySQL accesible desde su host, incluidas las bases de datos que se ejecutan en otros contenedores de Docker.

Una guía más detallada sobre cómo ejecutar y usar PHPMyAdmin está disponible en la documentación oficial. Es especialmente importante revisar la guía de seguridad para no dejar involuntariamente la base de datos en riesgo de ataques externos. También debe considerar las mejores prácticas de seguridad de Docker al implementar PHPMyAdmin dentro de un contenedor que está expuesto al mundo exterior.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir Change privacy settings