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.
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