From 88aec2c6fcf65b4127486f41a9e768c4b66750e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Geron?= Date: Sat, 8 Oct 2016 21:39:36 +0200 Subject: [PATCH] Use docker image ageron/handson-ml-base which solves the issue with using OpenAI gym within Jupyter --- Dockerfile | 21 +--------- Dockerfile-base | 100 ++++++++++++++++++++++++++++++++++++++++++++++ start-notebook.sh | 16 ++++++++ 3 files changed, 117 insertions(+), 20 deletions(-) create mode 100644 Dockerfile-base create mode 100755 start-notebook.sh diff --git a/Dockerfile b/Dockerfile index 27f24a7..533ef80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1 @@ -FROM andrewosh/binder-base - -USER root -RUN apt-get update -RUN apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig - -USER main - -# Python 2 -RUN conda install -c jjhelmus tensorflow=0.10.0 -RUN conda install -c conda-forge jupyter_contrib_nbextensions -RUN jupyter contrib nbextension install --user -RUN jupyter nbextension enable toc2/main -RUN pip install --upgrade gym -RUN pip install --upgrade 'gym[atari]' - -# Python 3 -RUN conda install -n python3 -c jjhelmus tensorflow=0.10.0 -RUN /bin/bash -c "source activate python3 && pip install --upgrade gym" -RUN /bin/bash -c "source activate python3 && pip install --upgrade 'gym[atari]'" +FROM ageron/handson-ml-base diff --git a/Dockerfile-base b/Dockerfile-base new file mode 100644 index 0000000..4c6943f --- /dev/null +++ b/Dockerfile-base @@ -0,0 +1,100 @@ +# Andrew Osheroff's docker base image, using system python rather than conda +# https://github.com/binder-project/binder-build-core ... /images/python/3.5 +FROM debian:jessie + +MAINTAINER Aurelien Geron + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update -y &&\ + apt-get install --fix-missing -y \ + build-essential\ + bzip2\ + cmake\ + curl\ + gcc\ + gfortran\ + git\ + libav-tools\ + libboost-all-dev\ + libglib2.0-0\ + libjpeg-dev\ + libsdl2-dev\ + libsm6\ + locales\ + nodejs-legacy\ + npm\ + python-dev\ + python-opengl\ + python-pip\ + python-qt4\ + python-virtualenv\ + python3-dev\ + python3-opengl\ + python3-pip\ + python3-virtualenv\ + swig\ + vim\ + wget\ + xorg-dev\ + xvfb\ + zlib1g-dev &&\ + apt-get clean &&\ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*tmp + +# set utf8 locale: +RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen +ENV LANG=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 + +# We run our docker images with a non-root user as a security precaution. +# main is our user +RUN useradd -m -s /bin/bash main + +EXPOSE 8888 + +USER main +ENV HOME /home/main +ENV SHELL /bin/bash +ENV USER main +WORKDIR $HOME + +# Add helper scripts +ADD start-notebook.sh /home/main/ + +USER main + +ENV SHELL /bin/bash + +RUN pip install --upgrade --user pip wheel +RUN pip3 install --upgrade --user pip wheel + +ENV PATH /home/main/.local/bin:$PATH + +# Install scientific packages +RUN pip install --upgrade --user matplotlib numexpr numpy pandas Pillow protobuf psutil scipy scikit-learn sympy +RUN pip3 install --upgrade --user matplotlib numexpr numpy pandas Pillow protobuf psutil scipy scikit-learn sympy + +# Install TensorFlow +RUN pip install --upgrade --user https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp27-none-linux_x86_64.whl +RUN pip3 install --upgrade --user https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp34-cp34m-linux_x86_64.whl + +# Install OpenAI gym +RUN pip install --upgrade --user gym +RUN pip3 install --upgrade --user gym +RUN pip install --upgrade --user "gym[atari]" +RUN pip3 install --upgrade --user "gym[atari]" + +# Install Jupyter and Jupyter extensions +RUN pip install --upgrade --user jupyter https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master +RUN pip3 install --upgrade --user jupyter https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master + +# Replace script to start Jupyter with xvfb-run +ADD start-notebook.sh /home/main/ + +RUN ipython2 kernel install --user +RUN ipython3 kernel install --user + +# Install Notebook extensions and activate the ToC extension +RUN jupyter contrib nbextension install --user +RUN jupyter nbextension enable toc2/main diff --git a/start-notebook.sh b/start-notebook.sh new file mode 100755 index 0000000..abd84b5 --- /dev/null +++ b/start-notebook.sh @@ -0,0 +1,16 @@ +#!/bin/bash +OPTS="" +echo "$HOME/notebooks/index.ipynb: " $HOME/notebooks/index.ipynb +if [ -e $HOME/notebooks/index.ipynb ]; then + OPTS="$OPTS --NotebookApp.default_url=/tree/index.ipynb " +fi +if [ -e $HOME/.binder_start ]; then + source $HOME/.binder_start +fi +CMD="$OPTS $@" +echo "CMD: " $CMD + +# Run Jupyter with xvfb-run so that it can render the CartPole +# environment without crashing: +xvfb-run -s "-screen 0 1400x900x24" jupyter notebook $CMD +