如何在dockerfile中构建opencv来清理/最小化容器的存储使用情况

时间:2017-08-16 08:05:16

标签: opencv docker

鉴于我的泊坞文件

FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu14.04
RUN apt-get update


# disable interactive functions
ENV DEBIAN_FRONTEND noninteractive



#################Install MiniConda and other dependencies##########
ENV CONDA_DIR /opt/conda
ENV PATH $CONDA_DIR/bin:$PATH
ENV OPENBLAS_NUM_THREADS $(nproc)

RUN mkdir -p $CONDA_DIR && \
    echo export PATH=$CONDA_DIR/bin:'$PATH' > /etc/profile.d/conda.sh && \
    apt-get update -y && \
    apt-get install -y \
    wget \
    git \
    g++ \
    graphviz \
    software-properties-common \
    python-software-properties \
    python3-dev \
    libhdf5-dev \
    libopenblas-dev \
    liblapack-dev \
    libblas-dev \
    libtbb2 \
    libtbb-dev && \
    apt-get -qq install -y \
    build-essential \ 
    unzip \
    cmake \
    pkg-config \
    libjpeg8-dev \
    libtiff4-dev \
    libjasper-dev \
    libpng12-dev \
    libgtk2.0-dev \
    libavcodec-dev \
    libavformat-dev \
    libswscale-dev \
    libv4l-dev \
    libatlas-base-dev \
    gfortran && \
    rm -rf /var/lib/apt/lists/* && \
    wget --quiet https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
    /bin/bash /Miniconda3-latest-Linux-x86_64.sh -f -b -p $CONDA_DIR && \
    rm Miniconda3-latest-Linux-x86_64.sh




#########################MPI###########################
RUN cd /tmp && \
        wget "https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.gz" && \
        tar xzf openmpi-2.1.1.tar.gz && \
        cd openmpi-2.1.1  && \
        ./configure --with-cuda && make -j"$(nproc)" install # && ldconfig



#######################NCCL###########################
ENV CPATH /usr/local/cuda/include:/usr/local/include:$CPATH
RUN cd /usr/local && git clone https://github.com/NVIDIA/nccl.git && cd nccl && \
    sed -i '/NVCC_GENCODE ?=/a \                -gencode=arch=compute_30,code=sm_30 \\' Makefile && \
        make CUDA_HOME=/usr/local/cuda -j"$(nproc)" && \
        make install && ldconfig

######### Compile for devices with cuda compute compatibility 3 (e.g. GRID K520 on aws) second line above
# UNCOMMENT line below to compile for GPUs with cuda compute compatibility 3.0
#        sed -i '/NVCC_GENCODE ?=/a \                -gencode=arch=compute_30,code=sm_30 \\' Makefile && \
##########




###################Setup User##########################
ENV NB_USER chainer
ENV NB_UID 1000

RUN useradd -m -s /bin/bash -N -u $NB_UID $NB_USER -g sudo -p $(perl -e'print crypt("chainer", "aa")') && \
    mkdir -p $CONDA_DIR && \
    chown chainer $CONDA_DIR -R && \
    mkdir -p /src && \
    chown -R chainer /src
#    mkdir -p /opencv && \
#    chown -R chainer /opencv && \
#    mkdir -p /opencv_contrib && \
#    chown -R chainer /opencv_contrib





####################Python 3#########################
ARG python_version=3.5.2
RUN conda install -y python=${python_version} && \
     pip install -U pip && \
     conda install Pillow scikit-learn notebook pandas matplotlib mkl nose pyyaml six h5py && \
     pip install numpy  && \
     pip install chainer && \
     pip install chainercv && \
#     pip install opencv-python && \
     pip install pyyaml && \
     conda clean -yt

#    pip install -U pip && \
#
#    conda install Pillow scikit-learn notebook pandas matplotlib mkl nose pyyaml six h5py && \
#
#
#    pip install mpi4py && \
#    pip install cython && \
#
#    pip install chainer && \
#    pip install chainercv && \
#    pip install chainermn && \





ENV PYTHONPATH $CONDA_DIR/lib/python3.5/site-packages/:$PYTHONPATH
ENV PYTHONPATH /src/:$PYTHONPATH

WORKDIR /src



##OPENCV##
RUN wget https://github.com/Itseez/opencv/archive/3.3.0.zip -O opencv3.zip && \
    unzip -q opencv3.zip && mv /src/opencv-3.3.0 /opencv && \
    wget https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip -O opencv_contrib3.zip && \
    unzip -q opencv_contrib3.zip && mv /src/opencv_contrib-3.3.0 /opencv_contrib
RUN rm -r -f /opencv/build && mkdir /opencv/build && \
    cd /opencv/build && \
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D BUILD_PYTHON_SUPPORT=ON \
        -D CMAKE_INSTALL_PREFIX=$CONDA_DIR \
    -D PYTHON3_LIBRARY=$CONDA_DIR/lib/python3.5 \
    -D PYTHON3_INCLUDE_DIRS=$CONDA_DIR/include/python3.5m \
    -D PYTHON3_EXECUTABLE=$CONDA_DIR/bin/python3 \
    -D PYTHON3_PACKAGES_PATH=$CONDA_DIR/lib/python3.5/site-packages \
        -D WITH_TBB=ON \
        -D INSTALL_C_EXAMPLES=OFF \
        -D INSTALL_PYTHON_EXAMPLES=OFF \
        -D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib/modules \
        -D BUILD_EXAMPLES=OFF \
        -D BUILD_NEW_PYTHON_SUPPORT=ON \
        -D WITH_IPP=OFF \
        -D WITH_V4L=ON .. && \
    make -j"$(nproc)" && \
    make install && \
    ldconfig

######################################################




USER chainer

最终大小为15GB。

我可以做些什么来减少所有自建项目的大小?可以再删除一些吗?

0 个答案:

没有答案