Configuración de PostgreSQL con Docker y Docker Compose
Clase 11 de 35 • Curso 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.
- Declarar la imagen de PostgreSQL más reciente como servicio principal.
- 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.
- Configurar el puerto 5432 para exponerlo y habilitar conexiones desde fuera del contenedor.
- 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
odocker 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.