From 481457690a68dce7c4823dc827b2af422a86421e Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nicolas.pope@utu.fi> Date: Sun, 12 Jun 2022 19:41:21 +0300 Subject: [PATCH] Initial base dockerfile --- Dockerfile | 189 ++++++++++++++++++++++++++++++++++++++++++++ libnvcuvid.so | Bin 0 -> 3528 bytes libnvidia-encode.so | Bin 0 -> 1480 bytes 3 files changed, 189 insertions(+) create mode 100644 Dockerfile create mode 100644 libnvcuvid.so create mode 100644 libnvidia-encode.so diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6b42ee8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,189 @@ +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 diff --git a/libnvcuvid.so b/libnvcuvid.so new file mode 100644 index 0000000000000000000000000000000000000000..f08a209545e076a835d11dcc24bd20d22088b1c5 GIT binary patch literal 3528 zcmb<-^>JfjWMqH=W(GS35bp~cM8p9?F`VFrG8h;b92hJZSQs1_I2hQ$YFQCd7_1Xq z5Fr@Nz@PvY0NDYu0w#Wf3nC7q4}euMFu-V-J|+eR22%8KK+Oq!T9N|N2jvo^VEP0Z z7#QRj7#M^Y7#PGE7#IW?7#O4(7#O6WCh#*bFmOWIAWD{jfdQmPjDdkcf`Nen<b4?i z1_nNmBpwX%7Yo#HAZ4I1g}DL5=K&E63=F(b8b%>S3xfy)0|Pq)0|PSy1A{OF1A{07 z1A`<?As(8UfrSAU-!NtAU_Y}k2!RYla+f(HC@feQ{LsX+pyE+z;=iHdEokCrq2d*2 z;*+4_X=vg{pzbk16R(A;Pe2p@0#$E=CJqWCAqEzPU(mz=r5O64>gCYXZ-9zxp@~;P z#U;?houJ}uXySLE;$~>#l1!j9_3?iPHzfVT!aoYCo(E06EY!aqXyV#X_22}66kpGv z>g&+db3(<P(8PssxJMO-_*|&HDrn{eLd_3B6JG`u&p{Ihl?R}Bfu%!OyljQ4FG5q# zkX%}pnc`fOnpl$RlA4^Kl3Ii;6qcEinjer@RE$M9IKQ+gITb@SL^vEOUQ*$cpPY@t zfmntj<dRxkQj}i_7YohHf$M^}Dj+ktq_hZX8&o+&2I^j@7>0w9#UW0E*y5gA0?{8_ zl2}q&j3!v*oLGPmgXnWCP07r6%P-1JEP<<r$bc<HlL3oCq(L@7UGAG$0G4noO3cM3 zWM%>}8XV+cl`e@TiBPek%(BFiRR019Hz+kZKQApay|f55;(}94z#1{^4$aHOv>i>* z%!DC6H3ej4e0)-IaeQ$}Vo?c0d}>|_Lr!K=UKu#G=oRPd88R?1gnD#7J$ZPrk&v7Z zDxW|s#;PC&#tH#OX&!ct35*O3pgIJEUH<?756&Bod;)Du&b(kY14Q12fq_8_k9-WM z{=y?)!@$7s?H_LQ=P)oZ+`%Kihk=3N5FU9@8Mp$E{2vAehCV#<GK>riC3xg*7#SF% z@W{t7GB7yck*{H7U{J#&KZlWlfd`NL9!3U+Pk(WT-yKE<h8uX~|1dHz?8753!^FU_ z1dqH869YpR9{Ct128IGW@-<8h3}JZW=P)ra*x-@h!^FU#gh&1k69WSW9{E2^3=Hr7 z;0`|-W(I~UIOJjND=kn%ih+Rv)RqF}BLz^!!oa`)YEOaqJD?J<eDeY-4{E1@<gK9k zVeKkV8xAB+bF5dKQCw0~l9<GxmyuYU!JwB?nO9ty3!zJj81za~D@qvjQZwSyz-2H< zJ~1~lnMw`=`4<#MQ13Iq!VN})+Fu~6VDhlGDKt32ZC;QWFnL(G!srW72~gV<#DwXG zg)gX`3X=ob1B)jZ4T~3$90)_B4a5XvMFs|NUj!DfuyzEDo(5KhAYkr>iKs*MgWLuZ zn*eQZz-SAQ<3JKn40At}%K)lZKz75Foq+deASz(}7??avKd3(eQUUT0Ob*0{;SNxs RGB7Y$!33Z*NIjGZrU1=O5(EGM literal 0 HcmV?d00001 diff --git a/libnvidia-encode.so b/libnvidia-encode.so new file mode 100644 index 0000000000000000000000000000000000000000..99934c7b22357afacb382aef554075081ee787f6 GIT binary patch literal 1480 zcmb<-^>JfjWMqH=W(GS35HE!ZBH{p{7)~%l84L^z4h$9yEDR0|91QGWwX6s!4Au## zIWU@mK>@4=WCt4q0|QL_1QSFYMjrsHVqk#LFnu87NYTduH7D?CNeW0GluM9;=>vJ2 zoq>S?<VTQx7A!hJYC!J7B84Kv%)r6`3s;zgGy?;J5CaQC7SsTc9UwUu1_lNJhL8U{ zm?7Z;5(8mSxPjEe%z>%5#i2d`hd6^@nQLBheoCrifTwd&YGO&MXI^nhVqS78vW$Cb ziEm;>aA`q7eo;wkN?2-9ab|uVLwssVVo4%He0)-IaeQ$}Vo?c0d}>|_Lr!K=URh>J zW}<E?*lfMxd_6-3hER{rrza0XND+`H7#J8BtAZF9D+Cy&dDuB7FfuU6FhKB?|NsAk z{p83e(8lD<3uZ&*Y#10AcHxlcgPI!(rD5@;017Z@{DGu?K>09p1E72^kR$^GLpGG= zhSCyHn&y;VaYk`TQAuJFgI-2raR!54N@ZSgWiEs+DPqtoNv$Yh&`ZsTPb*5yO$Cc5 z=4K{S$zdS>g3>rN88X1a4MrP4?SaX|@&_!O1sNC^KxV+?Vc`m+S3vc{@(N5pEPN#y z7#Lu3Af>Q)g3+*e0m*?dG}=H+FjfSmDFy}xSiHjW2aM(ct3nVkcf&-~q55I&FMu*& zbOcNxl!mz<%4INw+70ppNDNkv!OAySIR=x5=@$SghT092g9?GE4yd3Nn1>+H{SN@; C<aNjZ literal 0 HcmV?d00001 -- GitLab