Dockerfile 6.6 KB
Newer Older
Y
yi.wu 已提交
1 2
# A image for building paddle binaries
# Use cuda devel base image for both cpu and gpu environment
D
dzhwinter 已提交
3
# When you modify it, please be aware of cudnn-runtime version
G
gongweibao 已提交
4
# and libcudnn.so.x in paddle/scripts/docker/build.sh
Y
init  
Yang Yang 已提交
5
FROM nvidia/cuda:8.0-cudnn7-devel-ubuntu16.04
Y
Yi Wang 已提交
6
MAINTAINER PaddlePaddle Authors <paddle-dev@baidu.com>
7

Y
yangwenbo02 已提交
8
ARG UBUNTU_MIRROR
Y
yi.wu 已提交
9
RUN /bin/bash -c 'if [[ -n ${UBUNTU_MIRROR} ]]; then sed -i 's#http://archive.ubuntu.com/ubuntu#${UBUNTU_MIRROR}#g' /etc/apt/sources.list; fi'
L
liaogang 已提交
10

L
liaogang 已提交
11
# ENV variables
Y
yi.wu 已提交
12
ARG WITH_GPU
L
liaogang 已提交
13 14 15
ARG WITH_AVX
ARG WITH_DOC

Y
update  
Yancey1989 已提交
16
ENV WOBOQ OFF
17
ENV WITH_GPU=${WITH_GPU:-ON}
L
liaogang 已提交
18 19 20 21 22 23 24
ENV WITH_AVX=${WITH_AVX:-ON}
ENV WITH_DOC=${WITH_DOC:-OFF}

ENV HOME /root
# Add bash enhancements
COPY ./paddle/scripts/docker/root/ /root/

25 26 27 28 29 30 31 32 33 34 35 36
# Prepare packages for Python
RUN apt-get update && \
    apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
    xz-utils tk-dev libffi-dev liblzma-dev

# Install Python3.6
RUN mkdir -p /root/python_build/ && wget -q https://www.sqlite.org/2018/sqlite-autoconf-3250300.tar.gz && \
    tar -zxf sqlite-autoconf-3250300.tar.gz && cd sqlite-autoconf-3250300 && \
    ./configure -prefix=/usr/local && make -j8 && make install && cd ../ && rm sqlite-autoconf-3250300.tar.gz && \
    wget -q https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz && \
    tar -xzf Python-3.6.0.tgz && cd Python-3.6.0 && \
M
Min 已提交
37
    CFLAGS="-Wformat" ./configure --prefix=/usr/local/ --enable-shared > /dev/null && \
38 39 40 41 42
    make -j8 > /dev/null && make altinstall > /dev/null

# Install Python3.7
RUN wget -q https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz && \
    tar -xzf Python-3.7.0.tgz && cd Python-3.7.0 && \
M
Min 已提交
43
    CFLAGS="-Wformat" ./configure --prefix=/usr/local/ --enable-shared > /dev/null && \
44 45
    make -j8 > /dev/null && make altinstall > /dev/null

46 47
RUN rm -r /root/python_build

M
minqiyang 已提交
48
RUN apt-get update && \
M
minqiyang 已提交
49
    apt-get install -y --allow-downgrades patchelf \
M
minqiyang 已提交
50
    python3 python3-dev python3-pip \
51
    git python-pip python-dev python-opencv openssh-server bison \
M
minqiyang 已提交
52
    libnccl2=2.1.2-1+cuda8.0 libnccl-dev=2.1.2-1+cuda8.0 \
D
dongzhihong 已提交
53
    wget unzip unrar tar xz-utils bzip2 gzip coreutils ntp \
Y
Yi Wang 已提交
54
    curl sed grep graphviz libjpeg-dev zlib1g-dev  \
Y
Yu Yang 已提交
55
    python-matplotlib gcc-4.8 g++-4.8 \
Y
yuyang18 已提交
56
    automake locales clang-format swig cmake  \
57
    liblapack-dev liblapacke-dev \
Q
qijun 已提交
58
    clang-3.8 llvm-3.8 libclang-3.8-dev \
59
    net-tools libtool ccache && \
Q
qijun 已提交
60 61
    apt-get clean -y

62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
# Install Go and glide
RUN wget -qO- https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz | \
    tar -xz -C /usr/local && \
    mkdir /root/gopath && \
    mkdir /root/gopath/bin && \
    mkdir /root/gopath/src
ENV GOROOT=/usr/local/go GOPATH=/root/gopath
# should not be in the same line with GOROOT definition, otherwise docker build could not find GOROOT.
ENV PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin
# install glide
RUN curl -s -q https://glide.sh/get | sh

# Install TensorRT
# following TensorRT.tar.gz is not the default official one, we do two miny changes:
# 1. Remove the unnecessary files to make the library small. TensorRT.tar.gz only contains include and lib now,
#    and its size is only one-third of the official one.
# 2. Manually add ~IPluginFactory() in IPluginFactory class of NvInfer.h, otherwise, it couldn't work in paddle.
#    See https://github.com/PaddlePaddle/Paddle/issues/10129 for details.
RUN wget -qO- http://paddlepaddledeps.cdn.bcebos.com/TensorRT-4.0.0.3.Ubuntu-16.04.4.x86_64-gnu.cuda-8.0.cudnn7.0.tar.gz | \
    tar -xz -C /usr/local && \
    cp -rf /usr/local/TensorRT/include /usr && \
    cp -rf /usr/local/TensorRT/lib /usr

# git credential to skip password typing
RUN git config --global credential.helper store

# Fix locales to en_US.UTF-8
RUN localedef -i en_US -f UTF-8 en_US.UTF-8

# FIXME: due to temporary ipykernel dependency issue, specify ipykernel jupyter
# version util jupyter fixes this issue.

# specify sphinx version as 1.5.6 and remove -U option for [pip install -U
# sphinx-rtd-theme] since -U option will cause sphinx being updated to newest
# version(1.7.1 for now), which causes building documentation failed.
M
Min 已提交
97 98 99
RUN pip3 install -U wheel && \
    pip3 install -U docopt PyYAML sphinx==1.5.6 && \
    pip3 install sphinx-rtd-theme==0.1.9 recommonmark && \
100 101 102 103 104 105 106 107 108 109 110
    pip3.6 install -U wheel && \
    pip3.6 install -U docopt PyYAML sphinx==1.5.6 && \
    pip3.6 install sphinx-rtd-theme==0.1.9 recommonmark && \
    pip3.7 install -U wheel && \
    pip3.7 install -U docopt PyYAML sphinx==1.5.6 && \
    pip3.7 install sphinx-rtd-theme==0.1.9 recommonmark && \
    easy_install -U pip && \
    pip install -U pip setuptools wheel && \
    pip install -U docopt PyYAML sphinx==1.5.6 && \
    pip install sphinx-rtd-theme==0.1.9 recommonmark

M
Min 已提交
111 112 113
RUN pip3 install 'pre-commit==1.10.4' 'ipython==5.3.0' && \
    pip3 install 'ipykernel==4.6.0' 'jupyter==1.0.0' && \
    pip3 install opencv-python && \
114 115 116 117 118 119 120 121 122 123 124
    pip3.6 install 'pre-commit==1.10.4' 'ipython==5.3.0' && \
    pip3.6 install 'ipykernel==4.6.0' 'jupyter==1.0.0' && \
    pip3.6 install opencv-python && \
    pip3.7 install 'pre-commit==1.10.4' 'ipython==5.3.0' && \
    pip3.7 install 'ipykernel==4.6.0' 'jupyter==1.0.0' && \
    pip3.7 install opencv-python && \
    pip install 'pre-commit==1.10.4' 'ipython==5.3.0' && \
    pip install 'ipykernel==4.6.0' 'jupyter==1.0.0' && \
    pip install opencv-python

#For docstring checker
M
Min 已提交
125
RUN pip3 install pylint pytest astroid isort
126 127 128 129 130
RUN pip3.6 install pylint pytest astroid isort
RUN pip3.7 install pylint pytest astroid isort
RUN pip install pylint pytest astroid isort LinkChecker

COPY ./python/requirements.txt /root/
M
Min 已提交
131
RUN pip3 install -r /root/requirements.txt
132 133 134 135 136 137 138
RUN pip3.6 install -r /root/requirements.txt
RUN pip3.7 install -r /root/requirements.txt
RUN pip install -r /root/requirements.txt

# To fix https://github.com/PaddlePaddle/Paddle/issues/1954, we use
# the solution in https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2
RUN apt-get install -y libssl-dev libffi-dev
M
Min 已提交
139
RUN pip3 install certifi urllib3[secure]
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
RUN pip3.6 install certifi urllib3[secure]
RUN pip3.7 install certifi urllib3[secure]
RUN pip install certifi urllib3[secure]


# Install woboq_codebrowser to /woboq
RUN git clone https://github.com/woboq/woboq_codebrowser /woboq && \
    (cd /woboq \
     cmake -DLLVM_CONFIG_EXECUTABLE=/usr/bin/llvm-config-3.8 \
           -DCMAKE_BUILD_TYPE=Release . \
     make)

# Configure OpenSSH server. c.f. https://docs.docker.com/engine/examples/running_ssh_service
RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -ri 's/^PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
EXPOSE 22