En este post vamos a ver como instalar Jupyter Notebook en docker. Previamente tenemos que tener docker y docker-compose instalado.
El proyecto lo tenemos también en GitHub para que podáis hacer la descarga:
https://github.com/Pistatxos/jupyterDocker
Vamos a ver 2 pasos:
- Método simple: Instalación y uso rápido.
- Método personalizado: Añadimos propia contraseña e instalación de requirements previos para tener las librerías preinstaladas 😉
Instalando en docker simple:
docker run -d --name=jupyterlab -p 8888:8888 -v <ruta_local>:/home/jovyan/work jupyter/datascience-notebook
Instalando en docker-compose:
version: '3'
services:
jupyterlab:
image: jupyter/datascience-notebook
container_name: jupyterlab
ports:
- 8888:8888
volumes:
- <ruta_local>:/home/jovyan/work
Instalando en docker-compose personalizado:
services:
jupyterlab:
build: ./infrastructure
container_name: jupyterlab
ports:
- 8888:8888
volumes:
- ./datos:/home/jovyan/datos # Monta el directorio de datos en un subdirectorio separado
environment:
- JUPYTER_ENABLE_LAB=yes
- JUPYTER_TOKEN=AhB5ImyU2prh6vYJ5V1Kd # Token personalizado
- variableEnv1=ejemplo1 # Variable de entorno extras ejemplo
networks:
- shared_network # Añadir vuestra red
networks:
shared_network:
external: true
¿Qué tenemos y necesitamos en el personalizado?
Añadimos una carpeta /datos para almacenar los notebook que queramos o archivos varios.
Añadimos una carpeta /infrastructure donde añadimos el Dockerfile y el requirements.txt
El Dockerfile que necesitamos añadir en la carpeta infrastructure:
# Usa la imagen base de Jupyter
FROM jupyter/datascience-notebook
# Establece el directorio de trabajo en el contenedor
WORKDIR /home/jovyan
# Copia el archivo requirements.txt al contenedor
COPY requirements.txt .
# Instala las dependencias desde el archivo requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
El requirements.txt, datos de ejemplo, esto ya es personal:
# Data Manipulation
pandas
numpy
# HTTP Requests
requests
# Visualization
matplotlib
plotly
# Database connection
SQLAlchemy
psycopg2-binary
Para arrancar el docker-compose:
docker-compose up (ejecuta desde la terminal y ves todos los LOG)
docker-compose up -d (para ejecutar en segundo plano sin terminal)
Acceso web
Una vez que arrancamos el docker podremos acceder via el puerto elegido, en este caso el 8888.
Desde el navegador podremos acceder tipo:
localhost:8888
ip_del_server:8888
Nos encontraremos con la ventana:
Como sabemos el token?
Si has puesto tu token (contraseña) personalizada es ponerla y a funcionar.
En caso de no haberla puesto podemos hacer lo siguiente:
- Si has ejecutado desde la terminal y estás viendo los LOG podrás ver el token. Se introduce y a funcionar. Y si has puesto el token personalizado lo escribes directamente.
- Si has ejecutado sin ver la terminal. Primero podemos buscar el contendor con el comando:
sudo docker ps
Esto nos mostrará todo lo que se está ejecutando. Del contenedor Jupyter copiaremos el ID y con los comandos:
sudo docker exec 161a3e50a416 jupyter server list
o bien
sudo docker logs nombre_contenedor
Nos devolverá una línea parecida a esta:
http://161a3e50a416:8888/?token=313497f807329bc1fa63a4ff4d63263a511352f42ea581a2 :: /home/jovyan
Introducimos el token y a funcionar!
Espero que os sea de ayuda.
Un saludo!