Plataforma de Análisis de Datos con JupyterLab, PostgreSQL y pgAdmin usando Docker Compose

Plataforma de Análisis de Datos con JupyterLab, PostgreSQL y pgAdmin usando Docker Compose

¿Buscas un entorno de análisis de datos profesional, colaborativo y controlado, ideal para equipos o proyectos personales? Hoy te traigo una solución de lo más completa: desplegaremos JupyterLab junto a una base de datos PostgreSQL y el administrador visual pgAdmin. Todo esto en tu propio servidor usando Docker Compose. Así tendrás cuadernos interactivos para ciencia de datos, almacenamiento robusto y gestión visual de la base de datos, ¡listas para usar y en minutos!

¿Por qué esta combinación?

  • JupyterLab: es la suite definitiva para programadores y científicos de datos. Permite trabajar con cuadernos, terminales, scripts y mucho más, directamente desde el navegador.
  • PostgreSQL: la base de datos relacional open source más potente, perfecta para proyectos de análisis, reporting o prototipos web.
  • pgAdmin: interfaz web gratuita y cómoda para gestionar bases de datos PostgreSQL (consultas, backups, usuarios…).

¡A por el docker-compose.yml!

Aquí tienes el archivo docker-compose.yml completo, listo para copiar y usar. Puedes personalizar las contraseñas y rutas para tus necesidades.

version: "3.8"

services:
  jupyter:
    image: jupyter/base-notebook:latest
    container_name: jupyterlab
    restart: unless-stopped
    ports:
      - "8888:8888"
    environment:
      - JUPYTER_TOKEN=tu_token_de_acceso
      - JUPYTER_ENABLE_LAB=yes
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USER=databoss
      - POSTGRES_PASSWORD=datapassword
      - POSTGRES_DB=dataproject
    volumes:
      - ./jupyter-data:/home/jovyan/work
    depends_on:
      - postgres

  postgres:
    image: postgres:16
    container_name: postgresdb
    restart: unless-stopped
    environment:
      - POSTGRES_USER=databoss
      - POSTGRES_PASSWORD=datapassword
      - POSTGRES_DB=dataproject
    ports:
      - "5432:5432"
    volumes:
      - ./pg-data:/var/lib/postgresql/data

  pgadmin:
    image: dpage/pgadmin4:8
    container_name: pgadmin
    restart: unless-stopped
    environment:
      - [email protected]
      - PGADMIN_DEFAULT_PASSWORD=supersecret
    ports:
      - "5050:80"
    volumes:
      - ./pgadmin-data:/var/lib/pgadmin
    depends_on:
      - postgres

¿Qué hace cada servicio?

  • jupyter: Inicia el entorno JupyterLab listo para acceder vía navegador en el puerto 8888. Accede con el token indicado o ponlo a tu gusto.
  • postgres: Lanza una base de datos PostgreSQL ya inicializada, persiste los datos en el volumen local pg-data.
  • pgadmin: Expuesto en el puerto 5050. Ideal para administrar fácilmente la base de datos desde el navegador.

Primeros pasos

  1. Crea las carpetas para persistencia de datos:
    mkdir jupyter-data pg-data pgadmin-data
  2. Lanza la plataforma:
    docker compose up -d
  3. Accede a JupyterLab en http://localhost:8888 y autorízate con el token.
  4. Ve a http://localhost:5050 para entrar a pgAdmin (usuario y clave según el Compose).
  5. En pgAdmin, añade un nuevo servidor apuntando a host: postgres, usuario: databoss, password: datapassword.

¡Interconéctalo!

Desde un cuaderno de JupyterLab, puedes conectarte a la base de datos usando Python y la librería psycopg2 o SQLAlchemy:

import psycopg2
conn = psycopg2.connect(
    host="postgres",
    database="dataproject",
    user="databoss",
    password="datapassword"
)

Consejos y resolución de problemas

  • Si tienes el puerto 8888 o 5050 ocupado, puedes cambiarlos en el docker-compose.yml.
  • JupyterLab inicializa con Python y muchas librerías científicas; instala extras con !pip install paquete.
  • Puedes instalar extensiones de JupyterLab si lo necesitas, personalizando la imagen o usando el terminal incluido.
  • Asegúrate de que las carpetas pg-data, pgadmin-data, jupyter-data tengan permisos adecuados para evitar errores de escritura.
  • Para compartir acceso, puedes añadir más usuarios en pgAdmin o configurar Jupyter para autenticación con contraseña.

¡Con esto tienes un entorno profesional en tu propio servidor listo para análisis, desarrollo y visualización de datos!

Avatar

Por Mid