Jupyter-um01

JupyterLab con Entornos de SageMath y Estadística

Este repositorio contiene la configuración de Docker para distintos entornos de JupyterLab. La imagen utiliza Ubuntu 22.04 como base y gestiona sus dependencias mediante Miniconda.

📄 Licencia

Este proyecto está bajo la Licencia MIT, lo que significa que es de libre uso, copia y distribución, tanto para fines académicos como personales.

Consulta el archivo LICENSE para más detalles (o visita https://opensource.org/licenses/MIT).

🌳 Ramas Disponibles

El proyecto cuenta con 3 ramas especializadas, cada una optimizada para diferentes casos de uso:

1. Rama sage 📐

Contiene únicamente el entorno de SageMath. Ideal para cálculo algebraico y matemático avanzado.

2. Rama statistics 📊

Contiene únicamente el entorno de Estadística. Perfecto para análisis de datos y visualizaciones estadísticas.

3. Rama sage-statistics 🔀

Contiene ambos entornos integrados: SageMath y Estadística. Es la solución completa “todo en uno”.

🎞️ ¿Qué incluye cada imagen?

Entorno SageMath

Basado en Python 3.12, incluye:

Entorno de Estadística

Basado en Python 3.11, incluye:

Ambos entornos incluyen

🚀 Inicio Rápido (Docker Hub)

No necesitas construir la imagen localmente. Las imágenes ya se encuentran disponibles en Docker Hub como davidgb8246/jupyter-um01.

Comando de Despliegue Recomendado (Ejemplo: Rama sage-statistics)

Para ejecutar el contenedor con todas las opciones de configuración avanzada, usa el siguiente comando:

docker run -d \
    --rm \
    -p 7777:8888 \
    -e JUPYTER_PASSWD="your_secure_password" \
    -e GIT_REPOS="https://github.com/user01/repo01" \
    -v $(pwd)/mi_trabajo:/home/jupyter/work \
    --name jupyter-um01 \
    davidgb8246/jupyter-um01:sage-statistics-v0.1.1

📋 Explicación Detallada de Parámetros

Parámetros de Ejecución

Parámetro Opcional Valor Ejemplo Descripción
-d ✅ Sí Ejecuta el contenedor en modo desatendido (detached). Sin -d: El contenedor bloquea la terminal hasta que se detenga. Con -d: Funciona en segundo plano. Recomendado: Siempre usar para no bloquear la terminal.
--rm ✅ Sí Elimina automáticamente el contenedor al detenerlo. Sin --rm: El contenedor permanece en tu sistema consumiendo espacio. Con --rm: Se limpia automáticamente. Recomendado: Usar para desarrollo iterativo y mantener limpio el sistema.
-p 7777:8888 ❌ No 77778888 Mapeo de puertos: Conecta tu máquina local con el contenedor. 7777 es tu puerto local, 8888 el del contenedor. Sin -p: JupyterLab no será accesible desde tu navegador. Con -p: Accedes a través de http://localhost:7777. Puedes usar cualquier puerto disponible en lugar de 7777.
--name ✅ Sí jupyter-um01 Nombre identificable del contenedor. Sin --name: Docker asigna un nombre aleatorio. Con --name: Fácil de gestionar con docker stop jupyter-um01 o docker logs jupyter-um01. Recomendado: Facilita la administración.
Imagen ❌ No davidgb8246/jupyter-um01:sage-statistics-v0.1.1 Obligatorio. Especifica cuál imagen y versión usar: sage-vX.X, statistics-vX.X, sage-statistics-vX.X, o latest. Debe ser el último parámetro del comando.

Variables de Entorno (-e)

Variable Opcional Valor Ejemplo Descripción
JUPYTER_PASSWD ✅ Sí "tu_contraseña_segura" Opcional. Define una contraseña para proteger el acceso a JupyterLab. Sin esta variable: JupyterLab no pide contraseña (útil solo en desarrollo local). Con esta variable: Se cifra automáticamente y requiere contraseña al acceder. Recomendado: Usar en producción o servidores compartidos.
GIT_REPOS ✅ Sí "https://github.com/user01/repo01,https://github.com/user02/repo02" Opcional. Repositorios Git que se clonarán automáticamente en /home/jupyter/work/ al iniciar. Sin esta variable: Los directorios de repositorios no se crean automáticamente. Con esta variable: Se descargan los proyectos directamente. Los URLs se separan por comas sin espacios. Recomendado: Usar para cargar proyectos automáticamente.

Volumen (-v)

Aspecto Detalles
Propósito Sincroniza directorios entre tu máquina local y el contenedor. Ambos “ven” los mismos archivos en tiempo real.
Sintaxis -v ruta-local:ruta-contenedor (separa ambas rutas con :)
Opcional ✅ Sí. Sin -v: Los archivos dentro del contenedor se pierden al detenerlo. Con -v: Los datos persisten en tu máquina local. Recomendado: Siempre usar para proteger tu trabajo.
Ruta Local $(pwd)/mi_trabajo — Tu computadora. $(pwd) es el directorio actual. En Windows PowerShell usa: ${PWD}\mi_trabajo. Variantes: Rutas absolutas como /home/usuario/datos o C:\Users\Usuario\datos
Ruta Contenedor /home/jupyter/work — Dentro del contenedor. Es donde aparecen los archivos para JupyterLab.
Sincronización Bidireccional: Los cambios en tu carpeta local se reflejan en el contenedor y viceversa. Archivos creados en JupyterLab aparecen en tu carpeta local.
Persistencia Total: Aunque elimines el contenedor (--rm), los archivos en tu máquina local permanecen intactos.
Ejemplos -v /home/usuario/datos:/home/jupyter/work o -v C:\datos:/home/jupyter/work — Carpeta C:\datos accesible como /home/jupyter/work en el contenedor.

Selección de Rama/Imagen

Reemplaza el tag de imagen según necesites:

# Solo SageMath
davidgb8246/jupyter-um01:sage-v0.1.1

# Solo Estadística  
davidgb8246/jupyter-um01:statistics-v0.1.1

# Ambos (SageMath + Estadística)
davidgb8246/jupyter-um01:sage-statistics-v0.1.1
# o simplemente:
davidgb8246/jupyter-um01:latest

Acceso a JupyterLab

Una vez ejecutado el comando anterior, abre tu navegador web y dirígete a:

http://localhost:7777

Nota: Si usaste JUPYTER_PASSWD="your_secure_password", ingresa esa contraseña en la pantalla de autenticación.


Despliegue Automatizado por Rama

Ejecuta directamente el script de despliegue de cada rama. Los scripts permiten parametrización completa de la ejecución para personalizar el puerto, nombre del contenedor y repositorios Git a clonar.

Parámetros Disponibles:

Parámetro Tipo Por Defecto Descripción
APP_PORT Número 7777 Puerto local en el que se ejecutará JupyterLab. Debe estar disponible en tu sistema.
CONTAINER_NAME Texto Varía por rama Nombre identificable del contenedor Docker (sage: jupyter-sage, statistics: jupyter-stats, sage-statistics: jupyter-sage-statistics).
GIT_REPOS URL/URLs Vacío (opcional) Repositorio(s) Git a clonar automáticamente en /home/jupyter/work. Múltiples repos separados por comas sin espacios. Ejemplo: https://github.com/user/repo1,https://github.com/user/repo2
SHOW_ALL_IPS Booleano / Texto Vacío Si se establece, muestra todas las direcciones IP de la máquina además de localhost y 127.0.0.1. Por defecto, solo se muestran las direcciones locales.

Rama SageMath:

curl -fsSL https://jupyter-um01.davidgb.net/sage/run.sh | bash

Con parámetros personalizados:

curl -fsSL https://jupyter-um01.davidgb.net/sage/run.sh | APP_PORT=8888 CONTAINER_NAME=mi-sage GIT_REPOS="https://github.com/usuario/repo" bash

Rama Estadística:

curl -fsSL https://jupyter-um01.davidgb.net/statistics/run.sh | bash

Con parámetros personalizados:

curl -fsSL https://jupyter-um01.davidgb.net/statistics/run.sh | APP_PORT=8888 CONTAINER_NAME=mi-stats GIT_REPOS="https://github.com/usuario/repo" bash

Rama SageMath + Estadística (Completa):

curl -fsSL https://jupyter-um01.davidgb.net/sage-statistics/run.sh | bash

Con parámetros personalizados:

curl -fsSL https://jupyter-um01.davidgb.net/sage-statistics/run.sh | APP_PORT=8888 CONTAINER_NAME=mi-jupyter GIT_REPOS="https://github.com/user/repo1,https://github.com/user/repo2" bash

Notas sobre los scripts:

Clonador automático de repositorios


⚙️ Personalización y Modificación

El proyecto contiene tres Dockerfiles especializados, cada uno en su propio directorio. Aunque no son ramas de Git, representan tres configuraciones distintas que puedes modificar y construir localmente según tus necesidades.

Paso 1: Clonar el repositorio

git clone https://github.com/davidgb8246/Jupyter-um01
cd Jupyter-um01

Paso 2: Seleccionar y Modificar la Configuración

A continuación se muestra el ejemplo completo para la configuración sage-statistics (que incluye ambos entornos). Las otras configuraciones (sage y statistics) siguen el mismo proceso.

🔀 Ejemplo: Modificar la configuración sage-statistics

  1. Abre el archivo sage-statistics/Dockerfile con tu editor preferido:
# En Linux/macOS
nano sage-statistics/Dockerfile

# O en Windows
notepad sage-statistics\Dockerfile
  1. Modifica el Dockerfile según necesites:
# Ejemplo: Agregar librerías adicionales al entorno SageMath
RUN conda install -n sage -c conda-forge \
    sympy \
    networkx \
    otra-libreria-nueva

# Ejemplo: Agregar librerías adicionales al entorno de Estadística
RUN conda install -n statistics -c conda-forge \
    scikit-learn \
    xgboost \
    otra-libreria-stats

Paso 3: Construir la imagen personalizada

Una vez editado el Dockerfile, construye la imagen desde la raíz del proyecto, especificando la ruta al Dockerfile:

docker build \
    -f sage-statistics/Dockerfile \
    -t mi-jupyter-sage-statistics:v1.0 \
    .

Explicación del comando:

Paso 4: Ejecutar tu versión personalizada

docker run -d \
    --rm \
    -p 7777:8888 \
    -e JUPYTER_PASSWD="your_secure_password" \
    -e GIT_REPOS="https://github.com/usuario/repo" \
    -v $(pwd)/mi_trabajo:/home/jupyter/work \
    --name jupyter-personalizado \
    mi-jupyter-sage-statistics:v1.0

📝 Configurar otras variantes

Para modificar la configuración sage o statistics, simplemente repite los pasos anteriores especificando el Dockerfile correcto:

# Para la configuración sage (solo SageMath)
docker build \
    -f sage/Dockerfile \
    -t mi-jupyter-sage:v1.0 \
    .

# Para la configuración statistics (solo Estadística)
docker build \
    -f statistics/Dockerfile \
    -t mi-jupyter-statistics:v1.0 \
    .

Luego ejecuta cada una con su respectiva imagen:

# Ejecutar versión sage personalizada
docker run -d --rm -p 7777:8888 \
    -v $(pwd)/mi_trabajo:/home/jupyter/work \
    mi-jupyter-sage:v1.0

# Ejecutar versión statistics personalizada
docker run -d --rm -p 7777:8888 \
    -v $(pwd)/mi_trabajo:/home/jupyter/work \
    mi-jupyter-statistics:v1.0

💡 Consejos Útiles

👥 Contribuidores

Este proyecto ha sido desarrollado y es mantenido por: