Skip to content
Snippets Groups Projects
Commit 48145769 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Initial base dockerfile

parent ac6bb72d
No related branches found
No related tags found
No related merge requests found
FROM nvidia/cuda:11.6.2-devel-ubuntu20.04 AS devel
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/London
ENV NVIDIA_DRIVER_CAPABILITIES graphics,compute,utility,video
RUN apt-get update &&\
# Install build tools, build dependencies and python
apt-get install --no-install-recommends -y \
build-essential \
ninja-build \
git \
openssh-client \
wget \
unzip \
yasm \
cppcheck \
pkg-config \
vim \
pulseaudio \
libceres-dev \
libreadline-dev \
libopus-dev \
libxtst-dev \
libswscale-dev \
libtbb2 \
libtbb-dev \
libjpeg-dev \
libpng-dev \
libglew-dev \
zlib1g-dev \
libasound-dev \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libpostproc-dev \
libswscale-dev \
libeigen3-dev \
libgtk2.0-dev \
libxxf86vm-dev \
libgnutls28-dev \
uuid-dev \
libmsgpack-dev \
liburiparser-dev \
software-properties-common \
zenity \
gdb \
gdbserver \
valgrind \
&& apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE && \
add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo focal main" -u && \
apt-get update && \
apt-get install --no-install-recommends -y \
librealsense2-dev \
&& rm -rf /var/lib/apt/lists/*
COPY ./libnvcuvid.so ./libnvidia-encode.so /usr/lib/x86_64-linux-gnu/
RUN cd /opt/ &&\
# CMake
wget https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.sh && \
chmod a+x ././cmake-3.23.2-linux-x86_64.sh && \
./cmake-3.23.2-linux-x86_64.sh --skip-license --prefix=/usr/local && \
rm ./cmake-3.23.2-linux-x86_64.sh && \
# Pylon
wget -O pylon.deb https://seafile.utu.fi/f/b4585f6c84f0462fac04/?dl=1 &&\
apt-get install ./pylon.deb &&\
rm ./pylon.deb &&\
rm -rf /var/lib/apt/lists/* &&\
# Portaudio
cd /opt/ &&\
wget https://github.com/PortAudio/portaudio/archive/refs/tags/v19.7.0.tar.gz &&\
tar -xf ./v19.7.0.tar.gz &&\
rm ./v19.7.0.tar.gz &&\
cd ./portaudio-19.7.0 &&\
./configure && make && make install &&\
rm -rf ./portaudio-19.7.0
ARG OPENCV_VERSION=4.5.5
# Download and unzip OpenCV and opencv_contrib and delte zip files
RUN cd /opt/ &&\
wget https://github.com/opencv/opencv/archive/$OPENCV_VERSION.zip &&\
unzip $OPENCV_VERSION.zip &&\
rm $OPENCV_VERSION.zip &&\
wget https://github.com/opencv/opencv_contrib/archive/$OPENCV_VERSION.zip &&\
unzip ${OPENCV_VERSION}.zip &&\
rm ${OPENCV_VERSION}.zip &&\
# Create build folder and switch to it
mkdir /opt/opencv-${OPENCV_VERSION}/build && cd /opt/opencv-${OPENCV_VERSION}/build &&\
# Cmake configure
cmake \
-DOPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-${OPENCV_VERSION}/modules \
-DWITH_CUDA=ON \
-DOPENCV_ENABLE_NONFREE=ON\
-DCUDA_ARCH_BIN="6.1 7.5" \
-DBUILD_TESTS=OFF\
-DBUILD_PERF_TESTS=OFF\
-DBUILD_EXAMPLES=OFF\
-DBUILD_opencv_bioinspired=OFF\
-DBUILD_opencv_cudaobjdetect=OFF\
-DBUILD_opencv_dnn_objdetect=OFF\
-DBUILD_opencv_dnn_superres=OFF\
-DBUILD_opencv_fuzzy=OFF\
-DBUILD_opencv_hdf=OFF\
-DBUILD_opencv_hfs=OFF\
-DBUILD_opencv_dpm=OFF\
-DBUILD_opencv_image_hash=OFF\
-DBUILD_opencv_java_bindings_generator=OFF\
-DBUILD_opencv_js=OFF\
-DBUILD_opencv_saliency=OFF\
-DBUILD_opencv_sfm=OFF\
-DBUILD_opencv_stitching=OFF\
-DBUILD_opencv_structured_light=OFF\
-DBUILD_opencv_superres=OFF\
-DBUILD_opencv_surface_matching=OFF\
-DBUILD_opencv_viz=OFF\
-DBUILD_opencv_xobjdetect=OFF\
-DBUILD_opencv_gapi=OFF\
-DBUILD_opencv_videostab=OFF\
-DBUILD_opencv_rgbd=OFF\
-DWITH_CUDNN=OFF\
-DWITH_TIFF=OFF\
-DWITH_WEBP=OFF\
-DWITH_OPENEXR=OFF\
-DWITH_OPENCL=OFF\
-DWITH_PROTOBUF=ON\
-DCMAKE_BUILD_TYPE=RELEASE \
# Install path will be /usr/local/lib (lib is implicit)
-DCMAKE_INSTALL_PREFIX=/usr/local \
.. &&\
# Make
make -j"$(nproc)" && \
# Install to /usr/local/lib
make install && \
ldconfig &&\
# Remove OpenCV sources and build folder
rm -rf /opt/opencv-${OPENCV_VERSION} && rm -rf /opt/opencv_contrib-${OPENCV_VERSION} &&\
ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/opencv2
ARG PROTOCOL_VERSION=0.3.2
# Beyond Protocol
RUN wget https://gitlab.utu.fi/api/v4/projects/14965/packages/generic/libftl-protocol/${PROTOCOL_VERSION}/libftl-protocol${PROTOCOL_VERSION}-Linux.deb && \
apt-get install -y ./libftl-protocol${PROTOCOL_VERSION}-Linux.deb && \
rm ./libftl-protocol${PROTOCOL_VERSION}-Linux.deb
FROM nvidia/cuda:11.6.2-base-ubuntu20.04 AS runtime
ARG OPENCV_VERSION=4.5.5
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/London
ENV NVIDIA_DRIVER_CAPABILITIES graphics,compute,utility,video
RUN apt-get update && apt-get upgrade -y &&\
# Install build tools, build dependencies and python
apt-get install --no-install-recommends -y \
pulseaudio \
libceres1 \
libreadline8 \
libopus0 \
libxtst6 \
libtbb2 \
libjpeg8 \
libpng16-16 \
libtiff5 \
libavformat58 \
libpq5 \
libxine2 \
libglew2.1 \
zlib1g \
libasound2 \
libavcodec58 \
libavutil56 \
libpostproc55 \
libswscale5 \
libgtk2.0-0 \
libxxf86vm1 \
uuid \
libmsgpackc2 \
liburiparser1 \
software-properties-common \
&& rm -rf /var/lib/apt/lists/*
COPY --from=devel /usr/local/share /usr/local/share
COPY --from=devel /usr/local/lib /usr/local/lib
COPY --from=devel /opt/pylon /opt/pylon
COPY --from=devel /etc/udev/rules.d/69-basler-cameras.rules /etc/udev/rules.d/
COPY --from=devel /etc/profile.d /etc/profile.d
File added
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment