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
- Crea las carpetas para persistencia de datos:
mkdir jupyter-data pg-data pgadmin-data
- Lanza la plataforma:
docker compose up -d
- Accede a JupyterLab en http://localhost:8888 y autorízate con el token.
- Ve a http://localhost:5050 para entrar a pgAdmin (usuario y clave según el Compose).
- 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!