Configuración de PostgreSQL con Docker y Docker Compose

Clase 11 de 35Curso de Backend con NestJS

Resumen

Conectar una aplicación backend a una base de datos es parte fundamental del desarrollo moderno. La mejor alternativa, especialmente para proyectos Node.js con TypeScript, es usar contenedores Docker y herramientas como Docker Compose. Así, se agiliza el entorno de desarrollo y se evitan complicaciones de configuración local.

¿Cómo conectar una API backend a base de datos con Docker?

Crear una API suele implicar conectar recursos a sistemas de persistencia. Por lo general, se conectan bases de datos SQL como PostgreSQL, MySQL o MariaDB, aunque también pueden usarse soluciones NoSQL como MongoDB o Couchbase. En este caso, el enfoque está en PostgreSQL sobre Docker, que es ampliamente adoptado y flexible.

  • Docker permite levantar instancias de bases de datos sin instalarlas directamente en tu máquina, facilitando la portabilidad.
  • Docker Compose gestiona múltiples servicios y sistemas, usando archivos YAML donde se declara cada servicio a levantar.
  • Se recomienda evitar configuraciones innecesarias, por ejemplo, declarar drivers o redes personalizadas salvo que sean indispensables.

¿Cuáles son los pasos para levantar PostgreSQL con Docker Compose?

La configuración efectiva implica crear un archivo docker-compose.yaml y adaptarlo con las variables necesarias.

  1. Declarar la imagen de PostgreSQL más reciente como servicio principal.
  2. Definir variables de entorno: nombre de la base de datos, usuario y contraseña. Aquí puedes usar datos simples porque el entorno es local y aislado.
  3. Configurar el puerto 5432 para exponerlo y habilitar conexiones desde fuera del contenedor.
  4. Establecer un volumen para almacenar los datos y evitar perder información al reiniciar o eliminar el contenedor.

Agregar un cliente visual como pgAdmin es útil, y también puede incorporarse vía Docker Compose. Con pgAdmin es más sencillo inspeccionar y gestionar la base de datos mediante interfaz gráfica, sobre todo en pruebas y desarrollo.

¿Cómo acceder a PostgreSQL desde herramientas externas y visuales?

Puedes conectar distintos clientes visuales o de administración de bases de datos según preferencias:

  • pgAdmin: Permite gestionar PostgreSQL desde el navegador. En Docker, ambos servicios se comunican internamente usando el nombre del servicio como host.
  • DBeaver, DataGrip u otros: Si corres estos programas por fuera de Docker, debes usar localhost y el puerto que expusiste (por defecto, 5432) como host.
  • Al agregar la conexión, asegúrate de usar los datos definidos en tu archivo compose para usuario, contraseña y nombre de la base de datos.

La clave es entender cómo Docker expone servicios y cómo los clientes diferencian entre servicios internos (nombre del servicio) y externos (localhost).

¿Qué errores comunes y recomendaciones deben considerar?

El monitoreo de servicios y contenedores desde Docker Desktop (visual) o la terminal es esencial para detectar errores:

  • Utiliza comandos como docker compose ps o docker compose logs nombre_servicio para verificar el estado y revisar mensajes.
  • Si algún servicio no está en "verde" (activo), revisa logs y asegúrate de que las variables estén correctamente configuradas.
  • Ajusta los parámetros en docker-compose.yaml según el entorno, sin exponer datos sensibles si trabajas fuera del entorno local.

Compartir experiencias en la sección de comentarios siempre enriquece la comunidad y ayuda a resolver dudas prácticas sobre la instalación y el uso de Docker para bases de datos en desarrollo.