GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

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. Aquí se explica cómo usar la imagen para ejecutar rápidamente una nueva instancia de PHPMyAdmin.

Uso básico

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 su navegador para ver la pantalla de inicio de sesión. La presencia del PMA_ARBITRARY La variable de entorno da como resultado que se muestre un formulario de conexión del servidor. Especifique las credenciales de host y usuario de su base de datos MySQL o MariaDB para iniciar sesión.

Cuando usa este método, normalmente verá una advertencia de PHPMyAdmin que indica que "algunas funciones extendidas se han desactivado". Esto ocurre cuando el servidor al que está conectado no tiene una base de datos llamada phpmyadmin . PHPMyAdmin usa este esquema para almacenar sus propios 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.

Preconfiguración de un servidor

Como alternativa a permitir el acceso arbitrario, puede iniciar el contenedor PHPMyAdmin con una conexión de servidor preconfigurada. Proporcione el 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 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 necesitará proporcionar 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 función.

Usando un Contenedor 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. En cualquier caso, utilice el PMA_HOST y PMA_PORT las variables de entorno le indicarán a PHPMyAdmin cómo conectarse al servidor.

Los enlaces heredados de Docker también son compatibles:

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

Este comando le permite conectar PHPMyAdmin a my_mysql_container contenedor sin configurar manualmente los enlaces de red. Sin embargo, esta funcionalidad está obsoleta en Docker, por lo que es preferible 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

Como alternativa, puede iniciar PHPMyAdmin con una conexión de red preconfigurada usando --network de Docker bandera:

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

Ahora PHPMyAdmin podrá llegar al contenedor MySQL a través de la red compartida. Establecer el PMA_HOST variable de entorno a 172.17.0.1 cuando inicia el contenedor.

Simplificando la implementación con Docker Compose

Escribir un archivo Docker Compose simplifica las implementaciones no triviales. Puede abrir un nuevo contenedor PHPMyAdmin de forma repetible usando docker-compose up -d comando.

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

version: "3"

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

Docker Compose también lo 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

Ejecute docker-compose up -d para abrir MySQL con un contenedor PHPMyAdmin completamente conectado a la red. PMA_HOST de PHPMyAdmin la variable se establece en mysql , haciendo referencia al nombre del servicio MySQL. Docker Compose configura automáticamente los nombres de host para que coincidan con los nombres de los servicios, lo que permite que PHPMyAdmin se conecte a MySQL usando la red compartida.

Configurando la Instalación

La imagen PHPMyAdmin Docker admite un archivo de configuración proporcionado por el usuario que puede inyectar a través de un volumen Docker. La ruta 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. Estos incluyen MEMORY_LIMIT , UPLOAD_LIMIT y MAX_EXECUTION_TIME , cada uno de los cuales corresponde a los valores INI de PHP que es posible que deba ajustarse si está utilizando consultas complicadas o de ejecución prolongada.

Valores confidenciales, como PMA_HOST , PMA_PASSWORD y MYSQL_ROOT_PASSWORD , se puede inyectar utilizando secretos de Docker en lugar de variables de entorno simples. Añadir _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 con un puñado de comandos de la CLI de Docker. La imagen oficial puede conectarse a cualquier servidor MySQL al que se pueda acceder desde su host, incluidas las bases de datos que se ejecutan en otros contenedores de Docker.

Se puede encontrar una guía más detallada sobre cómo ejecutar y usar PHPMyAdmin en la documentación oficial. Es particularmente importante revisar la guía de seguridad para que no deje su base de datos en riesgo de sufrir un ataque externo sin querer. 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.


Docker
  1. ¿Cómo ejecutar un programa dentro de un contenedor Docker?

  2. Cómo usar SSH en un contenedor Docker

  3. Cómo ejecutar un comando en un contenedor Docker en ejecución

  4. Cómo asignar una IP estática a un contenedor Docker

  5. Cómo salir de un contenedor Docker

Cómo ejecutar la pila ELK en Docker Container

Cómo usar SSH en un contenedor Docker y ejecutar comandos

Cómo ejecutar una aplicación .NET en Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo configurar un contenedor Apache Docker

Cómo ejecutar contenedores Docker