1+ ARG CUDA_TAG=10.2
2+ ARG OS_TAG=18.04
3+ FROM nvidia/cuda:${CUDA_TAG}-devel-ubuntu${OS_TAG}
4+ LABEL maintainer="AliceVision Team
[email protected] "
5+
6+ # use CUDA_TAG to select the image version to use
7+ # see https://hub.docker.com/r/nvidia/cuda/
8+ #
9+ # For example, to create a ubuntu 16.04 with cuda 8.0 for development, use
10+ # docker build --build-arg CUDA_TAG=8.0 --tag alicevision/cctag-deps:cuda${CUDA_TAG}-ubuntu${OS_TAG} -f Dockerfile_deps .
11+ #
12+ # then execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0))
13+ # docker run -it --runtime=nvidia cctag_deps
14+
15+
16+ # OS/Version (FILE): cat /etc/issue.net
17+ # Cuda version (ENV): $CUDA_VERSION
18+
19+ # System update
20+ RUN apt-get clean && apt-get update && apt-get install -y --no-install-recommends \
21+ build-essential \
22+ wget \
23+ unzip \
24+ yasm \
25+ libtool \
26+ nasm \
27+ automake \
28+ libpng-dev \
29+ libjpeg-dev \
30+ ffmpeg \
31+ libssl-dev \
32+ libavcodec-dev \
33+ libavformat-dev \
34+ libswscale-dev \
35+ libavresample-dev \
36+ libtbb-dev \
37+ && rm -rf /var/lib/apt/lists/*
38+
39+ ENV DEPS_INSTALL_PATH="/opt"
40+
41+ # Manually install cmake
42+ WORKDIR /tmp/cmake
43+ ENV CMAKE_VERSION=3.17
44+ ENV CMAKE_VERSION_FULL=${CMAKE_VERSION}.2
45+ RUN wget https://cmake.org/files/v3.17/cmake-${CMAKE_VERSION_FULL}.tar.gz && \
46+ tar zxf cmake-${CMAKE_VERSION_FULL}.tar.gz && \
47+ cd cmake-${CMAKE_VERSION_FULL} && \
48+ ./bootstrap --prefix=/usr/local -- -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_USE_OPENSSL:BOOL=ON && \
49+ make -j$(nproc) install && \
50+ cd /tmp && \
51+ rm -rf cmake
52+
53+
54+ ENV BOOST_VERSION="1.70.0"
55+ ENV BOOST_VERSION_FILENAME="1_70_0"
56+ WORKDIR /tmp/boost
57+ RUN wget https://sourceforge.net/projects/boost/files/boost/${BOOST_VERSION}/boost_${BOOST_VERSION_FILENAME}.tar.gz && \
58+ tar -xzf boost_${BOOST_VERSION_FILENAME}.tar.gz && \
59+ cd boost_${BOOST_VERSION_FILENAME} && \
60+ ./bootstrap.sh --with-libraries=atomic,container,date_time,exception,filesystem,graph,log,math,program_options,regex,serialization,system,test,thread,stacktrace,timer --prefix="${DEPS_INSTALL_PATH}" && \
61+ ./b2 link=shared install && \
62+ cd /opt && \
63+ rm -rf /tmp/boost
64+
65+ WORKDIR /tmp/eigen
66+ ENV EIGEN_VERSION="3.3.7"
67+ RUN wget https://gitlab.com/libeigen/eigen/-/archive/${EIGEN_VERSION}/${EIGEN_VERSION}.tar.gz && \
68+ mkdir eigen-${EIGEN_VERSION} && tar xf ${EIGEN_VERSION}.tar.gz -C eigen-${EIGEN_VERSION} --strip-components 1 && \
69+ cd eigen-${EIGEN_VERSION} && \
70+ mkdir build && \
71+ cd build && \
72+ cmake .. -DCMAKE_INSTALL_PREFIX:PATH=${DEPS_INSTALL_PATH} && \
73+ make install -j$(nproc) && \
74+ cd /opt && \
75+ rm -rf /tmp/eigen
76+
77+ # install opencv
78+ ENV OPENCV_VERSION="3.4.10"
79+ WORKDIR /tmp/opencv
80+ RUN wget https://github.com/opencv/opencv/archive/"${OPENCV_VERSION}".zip && \
81+ unzip ${OPENCV_VERSION}.zip && \
82+ mkdir -p ./opencv-${OPENCV_VERSION}/build && \
83+ cd ./opencv-${OPENCV_VERSION}/build && \
84+ cmake -DBUILD_TIFF:BOOL=ON \
85+ -DBUILD_opencv_java:BOOL=OFF \
86+ -DWITH_CUDA:BOOL=OFF \
87+ -DENABLE_AVX:BOOL=ON \
88+ -DWITH_OPENGL:BOOL=ON \
89+ -DWITH_IPP:BOOL=ON \
90+ -DWITH_TBB:BOOL=ON \
91+ -DWITH_EIGEN:BOOL=ON \
92+ -DWITH_V4L:BOOL=ON \
93+ -DBUILD_TESTS:BOOL=OFF \
94+ -DBUILD_PERF_TESTS:BOOL=OFF \
95+ -DCMAKE_INSTALL_PREFIX:PATH=${DEPS_INSTALL_PATH} \
96+ -DCMAKE_BUILD_TYPE=RELEASE .. && \
97+ make -j$(nproc) install && \
98+ cd /opt && \
99+ rm -r /tmp/opencv
0 commit comments