# Installs Jupyter Notebook and IPython kernel from the current branch # Another Docker container should inherit with `FROM jupyter/notebook` # to run actual services. # # For opinionated stacks of ready-to-run Jupyter applications in Docker, # check out docker-stacks FROM jupyter/ubuntu_14_04_locale_fix MAINTAINER Project Jupyter # Not essential, but wise to set the lang # Note: Users with other languages should set this in their derivative image ENV LANGUAGE en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8 ENV PYTHONIOENCODING UTF-8 # Remove preinstalled copy of python that blocks our ability to install development python. RUN DEBIAN_FRONTEND=noninteractive apt-get remove -yq \ python3-minimal \ python3.4 \ python3.4-minimal \ libpython3-stdlib \ libpython3.4-stdlib \ libpython3.4-minimal # Python binary and source dependencies RUN apt-get update -qq && \ DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \ build-essential \ ca-certificates \ curl \ git \ language-pack-en \ libcurl4-openssl-dev \ libffi-dev \ libsqlite3-dev \ libzmq3-dev \ pandoc \ python \ python3 \ python-dev \ python3-dev \ sqlite3 \ texlive-fonts-recommended \ texlive-latex-base \ texlive-latex-extra \ zlib1g-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # Install Tini RUN curl -L https://github.com/krallin/tini/releases/download/v0.6.0/tini > tini && \ echo "d5ed732199c36a1189320e6c4859f0169e950692f451c03e7854243b95f4234b *tini" | sha256sum -c - && \ mv tini /usr/local/bin/tini && \ chmod +x /usr/local/bin/tini # Install the recent pip release RUN curl -O https://bootstrap.pypa.io/get-pip.py && \ python2 get-pip.py && \ python3 get-pip.py && \ rm get-pip.py && \ pip2 --no-cache-dir install requests[security] && \ pip3 --no-cache-dir install requests[security] && \ rm -rf /root/.cache # Install some dependencies. RUN pip2 --no-cache-dir install ipykernel && \ pip3 --no-cache-dir install ipykernel && \ \ python2 -m ipykernel.kernelspec && \ python3 -m ipykernel.kernelspec && \ rm -rf /root/.cache # Move notebook contents into place. ADD . /usr/src/jupyter-notebook # Install dependencies and run tests. RUN BUILD_DEPS="nodejs-legacy npm" && \ apt-get update -qq && \ DEBIAN_FRONTEND=noninteractive apt-get install -yq $BUILD_DEPS && \ \ pip3 install --no-cache-dir /usr/src/jupyter-notebook && \ pip2 install --no-cache-dir widgetsnbextension && \ pip3 install --no-cache-dir widgetsnbextension && \ \ npm cache clean && \ apt-get clean && \ rm -rf /root/.npm && \ rm -rf /root/.cache && \ rm -rf /root/.config && \ rm -rf /root/.local && \ rm -rf /root/tmp && \ rm -rf /var/lib/apt/lists/* && \ apt-get purge -y --auto-remove \ -o APT::AutoRemove::RecommendsImportant=false -o APT::AutoRemove::SuggestsImportant=false $BUILD_DEPS # Run tests. RUN pip3 install --no-cache-dir notebook[test] && nosetests -v notebook # Add a notebook profile. RUN mkdir -p -m 700 /root/.jupyter/ && \ echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py VOLUME /notebooks WORKDIR /notebooks EXPOSE 8888 ENTRYPOINT ["tini", "--"] CMD ["jupyter", "notebook"]