> Faqs > ¿Cómo acceder a una base de datos MySQL / MariaDB en un contenedor Docker creado con Laravel Sail?

¿Cómo acceder a una base de datos MySQL / MariaDB en un contenedor Docker creado con Laravel Sail?

Si queremos acceder a una base de datos MySQLo MariaDB que está creada en un contenedor Docker, con Laravel Sail. ¿Cómo se puede hacer?

La idea es acceder usando un software como HediSQL, TablePlus, SequelPro, etc. para poder ver los datos que tenemos en la base de datos y poder administrar MySQL o MariaDB si fuera necesario, por ejemplo restaurar un backup.

Además, encontramos una tesitura especial ¿Qué pasa si tengo otro software sistema gestor de base de datos instalado en mi ordenador, como host? Por ejemplo, en este ordenador tengo MySQL insalado, corriendo en el puerto 3306 y el servidor MariaDB que me crear Sail en un contenedor entiendo que estaría en el mismo puerto, con lo que no podría acceder.

En fin ¿Cómo proceder para el acceso a MySQL / MariaDB, que tenemos en el contenedor Docker creado por Sail y gestionar las posibles incompatibilidades de los puertos?

Respuestas

Primero que nada, asegúrate que en el archivo docker-compose.yml tienes definida la imagen de tu base de datos. Echa un vistazo al código y verás que usa varias variables de .env para generar los datos de configuración de la imagen.

Aunque en la documentación de Laravel no lo menciona, al menos por el momento, es posible definir que quieres que MySQL o MariaDB esté disponible en un puerto determinado del ordenador host.

Para ello, tienes que editar el archivo .env y colocar esta línea:

FORWARD_DB_PORT=3306

Aunque, si tienes ocupado ya ese puerto 3306 en el ordenador host, porque exista otro sistema gestor de base de datos MySQL o MariaDB instalado y corriendo directamente en la máquina, podrías hacer un forward de otro puerto cualquiera:

FORWARD_DB_PORT=3307

Una vez editado el .env tienes que parar sail y volverlo a arrancar.

Los datos de conexión a MySQL / MariaDB / PostgreSQL son los que tienes el el .env de tu proyecto Laravel en local, ya que el archivo de configuración docker-compose.yml simplemente lee esos datos para crear las imágenes y hacer el aprovisionamiento de las bases de datos.

El puerto de conexión será el que tienes en la variable de entorno que acabo de mencionar: FORWARD_DB_PORT

Ahora, en HeidiSQL, que es el sodtware de acceso a MySQL que estoy usando ahora, configuro la conexión con los siguientes valores:

  • Tipo de red: MariaDB or MySQL (TCP/IP)
  • Host: 127.0.0.1
  • Usuario: sail
  • Password: password
  • Puerto: 3307
  • Base de datos: laravel
Miguel Angel
2288 106 155 6