forked from hiennguyen9874/deepstream-face-recognition
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
154 lines (135 loc) · 5.04 KB
/
Dockerfile
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
ARG BASE_CONTAINER=nvcr.io/nvidia/deepstream:6.0.1-devel
FROM $BASE_CONTAINER as base
# Enviroment
ENV SWIG_PATH=/usr/swig/bin
ENV PATH=$SWIG_PATH:$PATH
ENV DEBIAN_FRONTEND=noninteractive
ENV LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
ARG DISTRO=ubuntu1804
ARG ARCH=x86_64
RUN apt-key del 7fa2af80 \
&& wget https://developer.download.nvidia.com/compute/cuda/repos/$DISTRO/$ARCH/cuda-keyring_1.0-1_all.deb \
&& dpkg -i cuda-keyring_1.0-1_all.deb \
&& sed -i '/developer\.download\.nvidia\.com\/compute\/cuda\/repos/d' /etc/apt/sources.list.d/* \
&& sed -i '/developer\.download\.nvidia\.com\/compute\/machine-learning\/repos/d' /etc/apt/sources.list.d/*
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libatlas-base-dev libatlas3-base \
clang-8 \
libopenblas-dev \
libpcre2-dev \
flex bison \
libglib2.0-dev \
libjson-glib-dev \
uuid-dev \
&& rm -rf /var/lib/apt/lists/* \
&& apt autoremove \
&& apt-get clean
# Cmake
WORKDIR /tmp
# RUN wget https://github.com/Kitware/CMake/releases/download/v3.19.4/cmake-3.19.4.tar.gz \
# && tar xvf cmake-3.19.4.tar.gz \
# && rm cmake-3.19.4.tar.gz \
# && cd /tmp/cmake-3.19.4/ \
# && mkdir /cmake \
# && ./configure --prefix=/cmake \
# && make -j$(nproc) \
# && make install \
# && cd /tmp \
# && rm -rf /tmp/cmake-3.19.4/
RUN wget https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-Linux-x86_64.tar.gz \
&& tar -zxvf cmake-3.19.5-Linux-x86_64.tar.gz \
&& rm cmake-3.19.5-Linux-x86_64.tar.gz \
&& cd /tmp/cmake-3.19.5-Linux-x86_64/ \
&& cp -rf bin/ doc/ share/ /usr/local/ \
&& cp -rf man/* /usr/local/man \
&& sync \
&& cmake --version \
&& cd /tmp \
&& rm -rf /tmp/cmake-3.19.5-Linux-x86_64/
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools Cython wheel \
&& python3 -m pip install --no-cache-dir numpy
FROM base as builder
# Build tensorRT
ARG TRT_OSS_CHECKOUT_TAG=release/8.2
ARG DGPU_ARCHS=75
ARG TENSORRT_REPO=https://github.com/hiennguyen9874/TensorRT
WORKDIR /tmp
RUN git clone -b $TRT_OSS_CHECKOUT_TAG $TENSORRT_REPO \
&& export TRT_SOURCE=/tmp/TensorRT \
&& cd /tmp/TensorRT \
&& git submodule update --init --recursive \
&& mkdir -p build \
&& cd /tmp/TensorRT/build \
&& cmake .. -DGPU_ARCHS=$DGPU_ARCHS \
-DTRT_LIB_DIR=/usr/lib/x86_64-linux-gnu/ \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DTRT_BIN_DIR=`pwd`/out \
&& make nvinfer_plugin -j$(nproc) \
&& cp $(find /tmp/TensorRT/build -name "libnvinfer_plugin.so.8.*" -print -quit) \
$(find /usr/lib/x86_64-linux-gnu/ -name "libnvinfer_plugin.so.8.*" -print -quit) \
&& ldconfig \
&& cd /tmp \
&& rm -rf /tmp/TensorRT
WORKDIR /tmp
RUN wget https://prdownloads.sourceforge.net/swig/swig-4.1.0.tar.gz \
&& tar -xzvf swig-4.1.0.tar.gz \
&& rm swig-4.1.0.tar.gz \
&& cd /tmp/swig-4.1.0 \
&& ./configure --prefix=/usr/swig \
&& make \
&& make install \
&& cd /tmp \
&& rm -rf /tmp/swig-4.1.0
# /usr/swig/
ENV SWIG_PATH=/usr/swig/bin
ENV PATH=$SWIG_PATH:$PATH
WORKDIR /tmp
RUN git clone https://github.com/facebookresearch/faiss.git \
&& cd /tmp/faiss \
&& mkdir build \
&& cmake -B build \
-DFAISS_ENABLE_GPU=OFF \
-DFAISS_ENABLE_PYTHON=ON \
-DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-DPYTHON_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \
-DPython_EXECUTABLE=$(which python3) \
-DFAISS_OPT_LEVEL=generic \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DBUILD_SHARED_LIBS=ON . \
&& make -C build -j faiss \
&& make -C build -j swigfaiss \
&& make -C build install \
&& cd /tmp \
&& mkdir /tmp/faiss-python \
&& cp -r /tmp/faiss/build/faiss /tmp/faiss-python \
&& rm -rf /tmp/faiss
# /usr/local/include/faiss, /usr/local/share/faiss, /usr/local/lib/libfaiss.so
FROM base
COPY --from=builder /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/
COPY --from=builder /usr/swig /usr/swig
COPY --from=builder /usr/local/include/faiss /usr/local/include/faiss
COPY --from=builder /usr/local/share/faiss /usr/local/share/faiss
COPY --from=builder /usr/local/lib/libfaiss.so /usr/local/lib/libfaiss.so
COPY --from=builder /tmp/faiss-python /tmp/faiss-python
WORKDIR /tmp
RUN cd /tmp/faiss-python/faiss/python \
&& python3 setup.py install \
&& cp /tmp/faiss-python/faiss/python/*.so /usr/local/lib/ \
&& cd /tmp \
&& rm -rf /tmp/faiss-python
RUN python3 -m pip install --no-cache-dir --extra-index-url https://download.pytorch.org/whl/cpu \
torch torchvision \
aiohttp numpy scipy \
scikit-image matplotlib \
pycuda six
RUN apt-get update && apt-get install -yq --no-install-recommends ffmpeg libsm6 libxext6 && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* \
&& python3 -m pip install --no-cache-dir opencv-python
USER root
WORKDIR /app
COPY ./ /app
CMD ['/bin/bash']