Configuración de PostgreSQL con Docker y Docker Compose
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 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.
El curso está de lujo, solo que el examen que está después del video 10 creo que debería reformularse en algunas preguntas, ya que son confusas:
Si y no pregunta nada de NestJS
Sentí lo mismo. Justo esa en particular podría reformularse a algo como: "¿Qué debería ocurrir si uno de los campos de una solicitud no cumple con su respectiva validación?" O "¿Qué debería ocurrir si el email en una solicitud no cumple con la validación correspondiente?"
Toda la gestión de terminal la estoy haciendo desde Windows PowerShell, y a partir de allí realicé todo el proceso para instalar, verificar y ejecutar Docker Desktop correctamente en Windows 💻🐳.
Primero, ingresamos al sitio oficial de Docker para descargar Docker Desktop:
🔗 .
Al abrir el menú de descargas, se mostraron varias opciones (Mac Apple Silicon, Mac Intel Chip, Windows AMD64, Windows ARM64 y Linux). Para determinar cuál era la versión correcta para mi equipo, ejecuté en PowerShell el siguiente comando:
wmic os get osarchitecture
Este comando devuelve si tu sistema está usando 64-bit (AMD64) o ARM64, lo cual permite elegir la descarga adecuada. En mi caso, la salida fue:
OSArchitecture64-bit
Esto confirma que debo instalar Docker Desktop para Windows – AMD64 ✔.
Una vez instalado Docker Desktop, verifiqué su funcionamiento ejecutando en PowerShell:
docker --version
docker compose version
Y ambos comandos respondieron correctamente, lo cual confirma que Docker quedó instalado, configurado y accesible desde PowerShell 🎉.
Además, también utilicé el comando:
where docker
para confirmar que el ejecutable está correctamente agregado al PATH del sistema.
Con estos pasos, Docker Desktop quedó completamente operativo en Windows, lo que permite ejecutar contenedores y usar docker compose sin necesidad de WSL.
En resumen: descargamos Docker Desktop desde la URL oficial, identificamos la arquitectura correcta mediante PowerShell, instalamos la versión adecuada (AMD64), verificamos que docker y docker compose funcionaran, y finalmente confirmamos que todo estuviera correctamente registrado en el PATH del sistema. Ahora Docker Desktop funciona sin problemas dentro de PowerShell 🚀🔥.
### docker ps [ver coentenedores activos]
### To run the services, use the command:
# docker-compose up -d --build postgres pgadmin [crear y levantar el contenedor]