Dockerfile.ubuntu20 6.9 KB
Newer Older
R
risemeup1 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
# A image for building paddle binaries
# Use cuda devel base image for both cpu and gpu environment
# When you modify it, please be aware of cudnn-runtime version
FROM <baseimg>
MAINTAINER PaddlePaddle Authors <paddle-dev@baidu.com>

# ENV variables
ARG WITH_GPU
ARG WITH_AVX

ENV WITH_GPU=${WITH_GPU:-ON}
ENV WITH_AVX=${WITH_AVX:-ON}
ENV DEBIAN_FRONTEND=noninteractive
<setcuda>

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

RUN chmod 777 /tmp

RUN apt-key del 7fa2af80
RUN rm /etc/apt/sources.list.d/*
RUN apt-key adv --fetch-keys https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub

RUN apt-get update --allow-unauthenticated && \
  apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && \
  apt-get update && \
  apt-get install -y curl wget vim git unzip unrar tar xz-utils libssl-dev bzip2 gzip \ 
    coreutils ntp language-pack-zh-hans libsm6 libxext6 libxrender-dev libgl1-mesa-glx \
    bison graphviz libjpeg-dev zlib1g-dev automake locales swig net-tools libtool kmod
<install_cpu_package>

# Downgrade gcc&&g++
WORKDIR /usr/bin 
COPY tools/dockerfile/build_scripts /build_scripts 
RUN bash /build_scripts/install_trt.sh
# Older versions of patchelf limited the size of the files being processed and were fixed in this pr.
# # https://github.com/NixOS/patchelf/commit/ba2695a8110abbc8cc6baf0eea819922ee5007fa
# # So install a newer version here.
RUN bash /build_scripts/install_patchelf.sh
RUN bash /build_scripts/install_gcc.sh gcc121
RUN cp gcc gcc.bak && cp g++ g++.bak && rm gcc && rm g++ 
RUN ln -s /usr/local/gcc-12.1/bin/gcc /usr/local/bin/gcc 
RUN ln -s /usr/local/gcc-12.1/bin/g++ /usr/local/bin/g++ 
RUN ln -s /usr/local/gcc-12.1/bin/gcc /usr/bin/gcc 
RUN ln -s /usr/local/gcc-12.1/bin/g++ /usr/bin/g++ 
ENV PATH=/usr/local/gcc-12.1/bin:$PATH 

Run bash /build_scripts/install_cudnn.sh cudnn841
ENV CUDNN_VERSION=8.4.1
#RUN bash /build_scripts/install_nccl2.sh
RUN rm -rf /build_script

# install cmake
WORKDIR /home
RUN wget -q https://cmake.org/files/v3.18/cmake-3.18.0-Linux-x86_64.tar.gz && tar -zxvf cmake-3.18.0-Linux-x86_64.tar.gz && rm cmake-3.18.0-Linux-x86_64.tar.gz
ENV PATH=/home/cmake-3.18.0-Linux-x86_64/bin:$PATH


RUN apt-get update && \
  apt-get install -y python3.7 python3.7-dev python3.7-distutils\
  python3.8 python3.8-dev python3.8-distutils \
  python3.9 python3.9-dev python3.9-distutils && \
  apt-get install python-is-python3 && \
  rm /usr/bin/python && ln -s /usr/bin/python3.7 /usr/bin/python && \
  rm /usr/bin/python3 && ln -s /usr/bin/python3.7 /usr/bin/python3


WORKDIR /home
RUN wget https://files.pythonhosted.org/packages/a7/e0/30642b9c2df516506d40b563b0cbd080c49c6b3f11a70b4c7a670f13a78b/setuptools-50.3.2.zip && apt-get -y install unzip && unzip setuptools-50.3.2.zip
WORKDIR /home/setuptools-50.3.2
RUN python3.9 setup.py build && python3.9 setup.py install && \
  python3.8 setup.py build && python3.8 setup.py install && \
  python3.7 setup.py build && python3.7 setup.py install

WORKDIR /home
RUN wget https://files.pythonhosted.org/packages/28/af/2c76c8aa46ccdf7578b83d97a11a2d1858794d4be4a1610ade0d30182e8b/pip-20.0.1.tar.gz && tar -zxvf pip-20.0.1.tar.gz
WORKDIR pip-20.0.1

RUN python3.9 setup.py install && \
  python3.8 setup.py install && \
  python3.7 setup.py install

WORKDIR /home
RUN rm setuptools-50.3.2.zip pip-20.0.1.tar.gz && \
    rm -r setuptools-50.3.2 pip-20.0.1
RUN rm /usr/local/bin/pip && ln -s /usr/local/bin/pip3.7 /usr/local/bin/pip && \
  rm /usr/local/bin/pip3 && ln -s /usr/local/bin/pip3.7 /usr/local/bin/pip3


# remove them when apt-get support 2.27 and higher version
RUN wget -q https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.gz && \ 
    tar -xzf binutils-2.33.1.tar.gz && \ 
    cd binutils-2.33.1 && \
    ./configure && make -j && make install && cd .. && rm -rf binutils-2.33.1 binutils-2.33.1.tar.gz


# Install Go and glide
RUN wget --no-check-certificate -qO- https://paddle-ci.gz.bcebos.com/go1.17.2.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

# 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

RUN pip3.7 --no-cache-dir install ipython==5.3.0 && \
    pip3.7 --no-cache-dir install ipykernel==4.6.0 wheel && \
    pip3.8 --no-cache-dir install ipython==5.3.0 && \
    pip3.8 --no-cache-dir install ipykernel==4.6.0 wheel && \
    pip3.9 --no-cache-dir install ipython==5.3.0 && \
    pip3.9 --no-cache-dir install ipykernel==4.6.0 wheel

#For docstring checker
RUN pip3.7 --no-cache-dir install pytest astroid isort && \
    pip3.8 --no-cache-dir install pytest astroid isort && \
    pip3.9 --no-cache-dir install pytest astroid isort

#For pre-commit
RUN pip3.7 --no-cache-dir install --upgrade pip && \
    pip3.8 --no-cache-dir install --upgrade pip && \
    pip3.9 --no-cache-dir install --upgrade pip

RUN pip3.7 --no-cache-dir install pre-commit==2.17.0 pylint==2.12.0 && \
    pip3.8 --no-cache-dir install pre-commit==2.17.0 pylint==2.12.0 && \
    pip3.9 --no-cache-dir install pre-commit==2.17.0 pylint==2.12.0 && \
    pip3.7 --no-cache-dir install cpplint==1.6.0 clang-format==13.0.0 && \
    pip3.8 --no-cache-dir install cpplint==1.6.0 clang-format==13.0.0 && \
    pip3.9 --no-cache-dir install cpplint==1.6.0 clang-format==13.0.0

COPY ./python/requirements.txt /root/
RUN pip3.7 --no-cache-dir install -r /root/requirements.txt && \
    pip3.8 --no-cache-dir install -r /root/requirements.txt && \
    pip3.9 --no-cache-dir install -r /root/requirements.txt

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

# ccache 3.7.9
RUN wget https://paddle-ci.gz.bcebos.com/ccache-3.7.9.tar.gz && \
    tar xf ccache-3.7.9.tar.gz && mkdir /usr/local/ccache-3.7.9 && cd ccache-3.7.9 && \
    ./configure -prefix=/usr/local/ccache-3.7.9 && \
    make -j8 && make install && \
    ln -s /usr/local/ccache-3.7.9/bin/ccache /usr/local/bin/ccache && \
    cd ../ && rm -rf ccache-3.7.9 ccache-3.7.9.tar.gz

# clang+llvm 3.8.0
RUN wget https://paddle-ci.cdn.bcebos.com/clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz && \ 
    tar xf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz && cd clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04 && \
    cp -rn * /usr/local && cd .. && rm -rf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04 && rm -rf clang+llvm-3.8.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz 

EXPOSE 22