Symfony 6, Docker y Postgres DB

Al menos desde la versión 5, la gente de Symfony sugiere el uso de la base datos Postgres. Una base de datos que tendría más velocidad, capacidad y variedad de campos que por ejemplo MySQL.

También se sugiere el uso del contenedor Docker, aunque de manera básica.

Si a Usted como a mi, le gusta visualizar los datos, ver el contenido de las tablas y sus relaciones gráficamente, así como hacer backups y manejarlos por fuera del sistema que esté programando, como podía hacerlo con PHPMyAdmin cuando utilizaba MySQL o MariaDB, tiene disponible un conjunto de aplicaciones entre las que elegí DBeaver que es gratuita, potente y puede bajarse de aquí: https://dbeaver.io/download/

Requisitos

Antes de continuar, le aclaro que el desarrollo que sigue supone que Usted cuenta con una PC con Windows 10, ya tiene instalado Symfony 6 con sus principales librerías, Symfony CLI, Composer, está desarrollando alguna aplicación (en mi caso el ejemplo de un «Guestbook» expuesto por Fabien Potencier en su libro «The Fast Track»), Docker y Docker-compose para Windows, y por supuesto el programa DBeaver

Este último programa perimte crear una nueva conexión en Postgres, la cual tiene sus particularidades cuando se está utilizando Docker y allí se tiene alojada la base de datos.

La conexión en DBeaver

Para poder crear con éxito la conexión entre DBeaver y Docker, necesitamos que Docker esté iniciado en su PC y la base de datos ya cargada sin problemas. Esto lo comprobamos con el comando: docker-compose ps ejecutándolo en la terminal de Windows (yo utilizo Power Shell). Si todo está en orden verá una pantalla similar a la siguiente:

Comando docker-compose ps y su resultado

En la imagen anterior, debemos prestar atención a dos columnas en especial, la que se denomina State que nos muestra en este caso que los dos componenetes de Docker contenidos en el stack se encuentran ejecutándose sin problemas al estar en Up. La otra columna a la cual debemos prestar atención especial, es la última designada como Ports De esa columna sale un dato muy importante para nuestra conexión y es el número 49555. Este número cambiará cada vez que apague Docker y lo vuelva a iniciar. La base de datos de Postgres, lleva el nombre aquí de guestbook_database_1

Nuestra base de datos tiene los siguientes parámetros, siguiendo el ejemplo de Potencier:

Nombre: app

Usuario: symfony

Password: ChangeMe

Siendo el puerto a utilizar 49555, y no el tradicional 5432 asignado por defecto a Postgres.

Ingresamos a DBvear donde ya tenemos creada la conexión pero que debe ser editada porque está con el número de puerto de la puesta en marcha anterior de Docker. Cambiamos entonces ese viejo puerto por el número nuevo:

Aquí hay otro parámetro clave para que funcione adecuadamente la conexión: el host. El host no es el típico localhost o 127.0.0.1 sino otro cuya identificación es: 192.168.100.30 ¿De donde sale este dato? Es el host correspondiente a la dirección IPv4 del conector de red que estemos usando en nuestra PC.

¿Donde obtengo este número? De la configuración de nuestra PC entrando a, Configuración->Internet y Redes->Propiedades y bajamos hasta el final donde vemos el dato que necesitamos. En mi caso, me conecto a Internet por Wi Fi y mi conexión se llama Giorgio.

La dirección IPv4 para esta conexión de red es:

Vamos entonces a DBeaver colocamos este número, y hacemos clic en «Probar conexión» resultando exitosa como lo muestra el cuadro siguiente:

Y ahora, dentro de DBeaver podemos ver los datos desplegados de la tabla Conference que forma parte del sistema Guestbook.

Como puede verse, nada complicado resulta este modo de crear una conexión en DBeaver para una base de datos Postegres y con Docker funcionando. Solo que debemos saber de donde obtener los datos correctos.