Dockerfile 4.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/

M
minqiyang 已提交
25
RUN apt-get update && \
M
minqiyang 已提交
26
    apt-get install -y --allow-downgrades patchelf \
M
minqiyang 已提交
27
    python3 python3-dev python3-pip \
28
    git python-pip python-dev python-opencv openssh-server bison \
M
minqiyang 已提交
29
    libnccl2=2.1.2-1+cuda8.0 libnccl-dev=2.1.2-1+cuda8.0 \
D
dongzhihong 已提交
30
    wget unzip unrar tar xz-utils bzip2 gzip coreutils ntp \
Y
Yi Wang 已提交
31
    curl sed grep graphviz libjpeg-dev zlib1g-dev  \
Y
Yu Yang 已提交
32
    python-matplotlib gcc-4.8 g++-4.8 \
Y
yuyang18 已提交
33
    automake locales clang-format swig cmake  \
34
    liblapack-dev liblapacke-dev \
Q
qijun 已提交
35
    clang-3.8 llvm-3.8 libclang-3.8-dev \
36
    net-tools libtool ccache && \
Q
qijun 已提交
37 38
    apt-get clean -y

W
wuyi05 已提交
39
# Install Go and glide
Y
Yi Wang 已提交
40 41
RUN wget -qO- https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz | \
    tar -xz -C /usr/local && \
H
Helin Wang 已提交
42
    mkdir /root/gopath && \
W
wuyi05 已提交
43
    mkdir /root/gopath/bin && \
Y
Yi Wang 已提交
44
    mkdir /root/gopath/src
H
Helin Wang 已提交
45 46
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.
W
wuyi05 已提交
47
ENV PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin
W
wuyi05 已提交
48
# install glide
49
RUN curl -s -q https://glide.sh/get | sh
H
Helin Wang 已提交
50

Y
Yan Chunwei 已提交
51
# Install TensorRT
L
Luo Tao 已提交
52 53 54 55 56
# 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.
G
guochaorong 已提交
57
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 | \
Y
Yan Chunwei 已提交
58 59 60 61
    tar -xz -C /usr/local && \
    cp -rf /usr/local/TensorRT/include /usr && \
    cp -rf /usr/local/TensorRT/lib /usr

L
liaogang 已提交
62 63 64 65 66 67
# 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

Y
yi.wu 已提交
68 69
# FIXME: due to temporary ipykernel dependency issue, specify ipykernel jupyter
# version util jupyter fixes this issue.
_青葱's avatar
_青葱 已提交
70 71 72 73

# 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
minqiyang 已提交
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
# RUN pip3 install -U wheel && \
    # pip3 install -U docopt PyYAML sphinx==1.5.6 && \
    # pip3 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

# 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 && \
    # 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
# RUN pip3 install pylint pytest astroid isort
# RUN pip install pylint pytest astroid isort LinkChecker

# COPY ./python/requirements.txt /root/
# RUN pip3 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
# RUN pip3 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