Configuración de Postgres en Docker con Docker Compose

Clase 4 de 27Curso de Backend con Node.js: Base de Datos con PostgreSQL

Resumen

¿Cómo correr una base de datos Postgres en Docker?

Docker es una herramienta poderosa que nos permite correr aplicaciones en contenedores sin tener que lidiar con complicaciones de instalación o configuración. Uno de los usos más comunes de Docker es correr bases de datos como Postgres de manera sencilla y eficiente. Vamos a explorar cómo configurar y correr Postgres en un contenedor con Docker.

¿Cómo configuramos Docker Compose para Postgres?

Docker Compose es una herramienta que nos permite definir y gestionar aplicaciones multi-contenedor. El primer paso para correr Postgres es crear un archivo docker-compose.yml. En este archivo configuraremos el entorno necesario para Postgres.

version: '3.3'
services:
  postgres:
    image: postgres:13
    environment:
      POSTGRES_DB: MyStore
      POSTGRES_USER: Nico
      POSTGRES_PASSWORD: admin123
    ports:
      - "5432:5432"

Detalles de la configuración

  • Versión: Usamos la versión '3.3' de Docker Compose. Esta versión no depende de la versión de Docker instalada.
  • Servicios: Definimos un servicio llamado postgres que utilizará la imagen de Postgres versión 13.
  • Variables de entorno: Incluimos variables de ambiente como el nombre de la base de datos (MyStore), el usuario (Nico) y la contraseña (admin123), facilitan la configuración inicial del contenedor.
  • Puertos: Mapeamos el puerto 5432 del contenedor al 5432 del host para que pueda ser accesible localmente.

¿Cómo ejecutar el contenedor de Postgres?

Una vez configurado el archivo docker-compose.yml, podemos ejecutar el contenedor desde la terminal con el siguiente comando:

docker-compose up -d postgres
  • up -d: Este comando levanta el contenedor en segundo plano.
  • Nombre del servicio: Asegúrate de que el nombre coincida con el configurado en el archivo YAML, en este caso postgres.

Podemos verificar que el servicio está corriendo con:

docker-compose ps

Este comando mostrará el contenedor en ejecución junto a los puertos que están escuchando.

¿Cómo proporcionar persistencia de datos?

A pesar de que Docker es ideal para aplicaciones efímeras, las bases de datos requieren persistencia. Para lograr esto se utiliza un volumen que permita guardar los datos incluso si el contenedor se detiene.

volumes:
  - ./postgres_data:/var/lib/postgresql/data
  • Carpeta local: ./postgres_data es el directorio local donde la información persistirá.
  • Carpeta en el contenedor: /var/lib/postgresql/data es el directorio dentro del contenedor donde Postgres guarda sus datos.

¿Cómo manejar errores comunes de configuración?

Un aspecto crítico al configurar estas herramientas es verificar la documentación oficial. Si cometemos un error en la ubicación del volumen o en cualquier otro aspecto, es vital consultar Docker Hub. En nuestro caso, nos aseguramos que la ruta final incluya SQL.

¿Cómo bajar el servicio de forma segura?

Para detener el servicio sin perder configuraciones o datos, utilizamos el comando:

docker-compose down

Esto asegura que el servicio se detiene correctamente, y los recursos como los puertos y volúmenes se liberan.

Conclusiones sobre el uso de Docker para bases de datos

Docker es una herramienta eficaz para desarrollar y probar bases de datos como Postgres localmente, permitiéndonos enfocarnos en el desarrollo sin preocuparnos por instalaciones complejas. ¡Sigue explorando y experimentando para dominar Docker y sus capacidades!