Como ejecutar phpMyAdmin en un ambiente de desarrollo con Docker

Una vez tienes dockerizada tu aplicación, lo siguiente que querrás hacer, como para terminar de dejar atrás el viejo XAMPP, será acceder a tu base de datos en forma gráfica, ¿cierto?.

Asumiré que tienes un archivo docker-compose.yml similar a este:

version: '3.8'
services:
  db:
    image: 'mysql:5.7.42-debian'
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=ruko
      - MYSQL_USER=ruko
      - MYSQL_PASSWORD=ruko
    restart: always
    volumes:
      - 'db-data:/var/lib/mysql'
  webserver:
    image: 'ruko_dev'
    user: 'www-data'
    build:
      context: '.'
    restart: always
    ports:
      - '8888:80'
    volumes:
      - './app/:/var/www/html/'
volumes:
  db-data: {}

Con lo cual, al hacer docker-compose up:

  • Tendrás acceso a tu sitio a través de http://localhost:8888
  • Cada cambio que realices se reflejará automáticamente al recargar la página

Lo que faltaría sería poder ingresar a alguna dirección local (Por qué no http://localhost:9999) y ver algo como:

Como de costumbre, existen varias opciones para lograrlo. La que considero más conveniente es crear un nuevo contenedor que pueda ejecutar phpMyAdmin. Veámoslo.

phpMyAdmin en un contenedor nuevo

Básicamente, lo que se necesita es un nuevo contenedor que contenga un servidor web y pueda conectarse a la base de datos que tiene tu entorno.

Qué mejor para ello que usar una imagen estándar de phpMyAdmin, ¿no?

En otras palabras, basta con ejecutar un comando del estilo:

docker run --name phpmyadmin -d --network dockerized_rukovoditel_342_default -p 9999:80 phpmyadmin

La red dockerized_rukovoditel_342_default corresponde a la red creada durante la ejecución de docker-compose up en mi ambiente, en el tuyo seguramente será algo diferente. En todo caso, siempre puedes usar docker network ls para averiguarlo.

Con esto ya tenemos lo suficiente como para ingresar a http://localhost:9999 y trabajar cómodamente con phpMyAdmin.

Claro que tener que usar este comando no es lo más práctico del mundo, ¿no?

Completemos el trabajo metiendo la nueva configuración dentro del docker-compose.yml.

phpMyAdmin en un contenedor nuevo manejado por docker-compose

Como podrás imaginar, sólo se trata de traducir la llamada directa al cliente de docker a la sintaxis YAML utilizada por docker-compose. Es decir, se trata de sumar esta definición a la sección services del archivo docker-compose.yml:

  pma:
    image: 'phpmyadmin'
    ports:
      - '9999:80'
    restart: always

Para probarlo todo basta con ejecutar docker-compose down y docker-compose up.

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a afinar sus habilidades técnicas y avanzar en sus carreras

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.