Created
July 20, 2016 12:38
-
-
Save morgangiraud/86e279061b9857cda3955f636886e97b to your computer and use it in GitHub Desktop.
Dockerfile tensorflow built from source cuda:7.5-cudnn5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM nvidia/cuda:7.5-cudnn5-devel | |
MAINTAINER Craig Citro <[email protected]>, Morgan Giraud <[email protected]> | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
build-essential \ | |
curl \ | |
git \ | |
libfreetype6-dev \ | |
libpng12-dev \ | |
libzmq3-dev \ | |
pkg-config \ | |
python \ | |
python-dev \ | |
python-numpy \ | |
python-pip \ | |
rsync \ | |
software-properties-common \ | |
swig \ | |
unzip \ | |
zip \ | |
zlib1g-dev \ | |
&& \ | |
apt-get clean && \ | |
rm -rf /var/lib/apt/lists/* | |
RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \ | |
python get-pip.py && \ | |
rm get-pip.py | |
RUN pip --no-cache-dir install \ | |
ipykernel \ | |
jupyter \ | |
matplotlib \ | |
&& \ | |
python -m ipykernel.kernelspec | |
# Set up Bazel. | |
# We need to add a custom PPA to pick up JDK8, since trusty doesn't | |
# have an openjdk8 backport. openjdk-r is maintained by a reliable contributor: | |
# Matthias Klose (https://launchpad.net/~doko). It will do until | |
# we either update the base image beyond 14.04 or openjdk-8 is | |
# finally backported to trusty; see e.g. | |
# https://bugs.launchpad.net/trusty-backports/+bug/1368094 | |
RUN add-apt-repository -y ppa:openjdk-r/ppa && \ | |
apt-get update && \ | |
apt-get install -y --no-install-recommends openjdk-8-jdk openjdk-8-jre-headless && \ | |
apt-get clean && \ | |
rm -rf /var/lib/apt/lists/* | |
# Running bazel inside a `docker build` command causes trouble, cf: | |
# https://github.com/bazelbuild/bazel/issues/134 | |
# The easiest solution is to set up a bazelrc file forcing --batch. | |
RUN echo "startup --batch" >>/root/.bazelrc | |
# Similarly, we need to workaround sandboxing issues: | |
# https://github.com/bazelbuild/bazel/issues/418 | |
RUN echo "build --spawn_strategy=standalone --genrule_strategy=standalone" \ | |
>>/root/.bazelrc | |
ENV BAZELRC /root/.bazelrc | |
# Install the most recent bazel release. | |
ENV BAZEL_VERSION 0.3.0 | |
WORKDIR / | |
RUN mkdir /bazel && \ | |
cd /bazel && \ | |
curl -fSsL -O https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ | |
curl -fSsL -o /bazel/LICENSE.txt https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE.txt && \ | |
chmod +x bazel-*.sh && \ | |
./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \ | |
cd / && \ | |
rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh | |
# Download and build TensorFlow. | |
RUN git clone -b v0.9.0 --recursive --recurse-submodules https://github.com/tensorflow/tensorflow.git && \ | |
cd tensorflow && \ | |
git checkout v0.9.0 | |
WORKDIR /tensorflow | |
# Configure the build for our CUDA configuration. | |
ENV CUDA_TOOLKIT_PATH /usr/local/cuda | |
ENV CUDNN_INSTALL_PATH /usr/local/cuda | |
ENV TF_NEED_CUDA 1 | |
RUN ./configure && \ | |
bazel build -c opt --config=cuda tensorflow/tools/pip_package:build_pip_package && \ | |
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/pip && \ | |
pip install --upgrade /tmp/pip/tensorflow-*.whl | |
WORKDIR /root | |
# Set up CUDA variables | |
ENV CUDA_PATH /usr/local/cuda | |
# TensorBoard | |
EXPOSE 6006 | |
RUN ["/bin/bash"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment