Skip to content

Instantly share code, notes, and snippets.

@mynameismaxz
Created June 7, 2019 05:22
Show Gist options
  • Save mynameismaxz/c12e52bf56d76ab3ad1bdd4882790646 to your computer and use it in GitHub Desktop.
Save mynameismaxz/c12e52bf56d76ab3ad1bdd4882790646 to your computer and use it in GitHub Desktop.
# ---------------------------------------------
# Stage 1: Initial State
# ---------------------------------------------
FROM nvidia/cuda:9.0-cudnn7-runtime-ubuntu16.04 as essential_stage
# Install Essential Package
RUN apt-get update && apt-get -y install --no-install-recommends \
build-essential \
g++ \
curl \
git \
wget \
sshfs \
unzip \
vim \
pkg-config \
rsync \
software-properties-common \
tk-dev \
libreadline-gplv2-dev \
libncursesw5-dev \
libssl-dev \
libsqlite3-dev \
libgdbm-dev \
libc6-dev \
libbz2-dev \
supervisor \
ffmpeg \
tmux && \
sed -i 's/^\(\[supervisord\]\)$/\1\nnodaemon=true/' /etc/supervisor/supervisord.conf && \
curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
apt-get install -y nodejs
# Define mountable directories.
VOLUME ["/etc/supervisor/conf.d"]
RUN update-rc.d supervisor defaults
# ---------------------------------------------
# Stage 2: python builder
# ---------------------------------------------
FROM essential_stage as based_image
RUN cd /usr/src && \
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz \
&& tar xzf Python-3.5.2.tgz \
&& cd Python-3.5.2 && ./configure && make altinstall \
&& rm -rf ../Python-3.5.2 ../Python-3.5.2.tgz \
&& ls -la /usr/local/bin | grep python \
&& ls -l /usr/lib/python3.5/
RUN git clone https://github.com/c9/core.git /cloud9 && \
sh /cloud9/scripts/install-sdk.sh && \
sed -i -e 's_127.0.0.1_0.0.0.0_g' /cloud9/configs/standalone.js
# ---------------------------------------------
# Stage 3: combined together
# ---------------------------------------------
FROM based_image
# Set Environments
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
ENV PATH ${PATH}:/usr/local/cuda-9.0/bin
ENV CUDA_HOME ${CUDA_HOME}:/usr/local/cuda:/usr/local/cuda-9.0
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/usr/local/cuda-9.0/lib64
# make some useful symlinks that are expected to exist
RUN ls -la /usr/local/bin | grep python \
&& cd /usr/local/bin \
&& ln -s python3.5 python \
&& ln -s python3.5-config python-config \
&& python -V
# Install Python-Installation-Package (PIP)
RUN curl -O https://bootstrap.pypa.io/get-pip.py && \
python get-pip.py && \
rm get-pip.py
# Create Workspace
RUN mkdir -p /data
VOLUME [ "/data" ]
WORKDIR /data
# Install pip package via requirements.txt
ADD requirements.txt /data
RUN pip3 --no-cache-dir install -r requirements.txt
# Update Config for Jupyter within PasswordMode
COPY ./config/jupyter_notebook_config.py /root/.jupyter/
# Add supervisord conf
ADD ./config/cloud9.conf /etc/supervisor/conf.d/
ADD ./config/jupyter.conf /etc/supervisor/conf.d/
# Expose port
# 8888 -> jupyter
# 80 -> cloud9
# 6006 -> tensorboard (optional)
EXPOSE 8888
EXPOSE 80
EXPOSE 6006
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment