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

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

60 61 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
# 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 已提交
95 96 97
RUN pip3 install -U wheel && \
    pip3 install -U docopt PyYAML sphinx==1.5.6 && \
    pip3 install sphinx-rtd-theme==0.1.9 recommonmark && \
98 99 100 101 102 103 104 105 106 107 108
    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 已提交
109 110 111
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 && \
112 113 114 115 116 117 118 119 120 121 122
    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 已提交
123
RUN pip3 install pylint pytest astroid isort
124 125 126 127 128
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 已提交
129
RUN pip3 install -r /root/requirements.txt
130 131 132 133 134 135 136
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 已提交
137
RUN pip3 install certifi urllib3[secure]
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
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