/jupyter-notebook-docker-compose

A docker-compose file for launching Jupyter Notebooks in a container.

Primary LanguageShell

Jupyter with Docker Compose

This repository contains a simple docker-compose definition for launching the popular Jupyter Data Science Notebook. You can define a password with the script generate_token.py -p S-E-C-R-E-T and generate SSL certificates as described below.

Control the container:

  • docker-compose up mounts the directory and starts the container
  • docker-compose down destroys the container

The compose file: docker-compose.yml

version:  '3'
services:
  datascience-notebook:
      image:    jupyter/datascience-notebook
      volumes:
        - ${LOCAL_WORKING_DIR}:/home/jovyan/work
        - ${LOCAL_DATASETS}:/home/jovyan/work/datasets
        - ${LOCAL_MODULES}:/home/jovyan/work/modules
        - ${LOCAL_SSL_CERTS}:/etc/ssl/notebook
      ports:
        - ${PORT}:8888
      container_name:   jupyter_notebook
      command: "start-notebook.sh \
        --NotebookApp.password=${ACCESS_TOKEN} \
        --NotebookApp.certfile=/etc/ssl/notebook/jupyter.pem"

Example with a custom user

version: '2'
services:
    datascience-notebook:
        image: jupyter/base-notebook:latest
        volumes:
            - /tmp/jupyter_test_dir:/home/docker_worker/work            
        ports:
            - 8891:8888
        command: "start-notebook.sh"
        user: root
        environment:
          NB_USER: docker_worker
          NB_UID: 1008
          NB_GID: 1011
          CHOWN_HOME: 'yes'
          CHOWN_HOME_OPTS: -R

The environment file .env

# Define a local data directory
# Set permissions for the container:
#   sudo chown -R 1000 ${LOCAL_WORKING_DIR}

LOCAL_WORKING_DIR=/data/jupyter/notebooks

# Generate an access token like this
#   import IPython as IPython
#   hash = IPython.lib.passwd("S-E-C-R-E-T")
#   print(hash)
# You can use the script generate_token.py

ACCESS_TOKEN=sha1:d4c78fe19cb5:0c8f830971d52da9d74b9985a8b87a2b80fc6e6a

# Host port
PORT=8888

# Provide data sets
LOCAL_DATASETS=/data/jupyter/datasets

# Provide local modules
LOCAL_MODULES=/home/git/python_modules

# SSL
# Generate cert like this:
#   openssl req -x509 -nodes -newkey rsa:2048 -keyout jupyter.pem -out jupyter.pem
# Copy the jupyter.pem file into the location below.
LOCAL_SSL_CERTS=/opt/ssl-certs/jupyter

Version Conflicts

Make sure to have the latest versions installed. You can use the Notebook Browser interface.

pip install -U jupyter