Skip to content

Commit 4e4bf02

Browse files
committed
[docker] Add Dockerfiles for Rocky9 build
CCTag build has been disabled, as well as the SWIG binding.
1 parent 868e745 commit 4e4bf02

File tree

4 files changed

+243
-7
lines changed

4 files changed

+243
-7
lines changed

docker/Dockerfile_rocky

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
ARG AV_DEPS_VERSION
2+
ARG AV_VERSION
3+
ARG CUDA_VERSION
4+
ARG ROCKY_VERSION
5+
FROM alicevision/alicevision-deps:${AV_DEPS_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_VERSION}
6+
LABEL maintainer="AliceVision Team [email protected]"
7+
ARG TARGET_ARCHITECTURE=core
8+
9+
# use CUDA_VERSION to select the image version to use
10+
# see https://hub.docker.com/r/nvidia/cuda/
11+
#
12+
# AV_VERSION=2.2.8
13+
# CUDA_VERSION=11.0
14+
# ROCKY_VERSION=9
15+
# docker build \
16+
# --build-arg CUDA_VERSION=${CUDA_VERSION} \
17+
# --build-arg ROCKY_VERSION${ROCKY_VERSION} \
18+
# --build-arg AV_VERSION=2.2.8.develop \
19+
# --tag alicevision/alicevision:${AV_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_VERSION} \
20+
# -f Dockerfile_rocky .
21+
#
22+
# then execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0))
23+
# docker run -it --runtime=nvidia alicevision/alicevision:{AV_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_VERSION}
24+
25+
26+
# OS/Version (FILE): cat /etc/issue.net
27+
# Cuda version (ENV): $CUDA_VERSION
28+
29+
ENV AV_DEV=/opt/AliceVision_git \
30+
AV_BUILD=/tmp/AliceVision_build \
31+
AV_INSTALL=/opt/AliceVision_install \
32+
AV_BUNDLE=/opt/AliceVision_bundle \
33+
PATH="${PATH}:${AV_BUNDLE}" \
34+
VERBOSE=1
35+
36+
COPY CMakeLists.txt *.md ${AV_DEV}/
37+
COPY src ${AV_DEV}/src
38+
39+
WORKDIR "${AV_BUILD}"
40+
41+
COPY docker ${AV_DEV}/docker
42+
43+
RUN export CPU_CORES=`${AV_DEV}/docker/check-cpu.sh`
44+
45+
RUN cmake -DCMAKE_BUILD_TYPE=Release \
46+
-DBUILD_SHARED_LIBS:BOOL=ON \
47+
-DTARGET_ARCHITECTURE=${TARGET_ARCHITECTURE} \
48+
-DALICEVISION_BUILD_DEPENDENCIES:BOOL=OFF \
49+
-DCMAKE_PREFIX_PATH:PATH="${AV_INSTALL}" \
50+
-DCMAKE_INSTALL_PREFIX:PATH="${AV_INSTALL}" \
51+
-DALICEVISION_BUNDLE_PREFIX="${AV_BUNDLE}" \
52+
-DALICEVISION_USE_ALEMBIC:BOOL=ON \
53+
-DMINIGLOG:BOOL=ON \
54+
-DALICEVISION_USE_CCTAG:BOOL=OFF \
55+
-DALICEVISION_USE_OPENCV:BOOL=ON \
56+
-DALICEVISION_USE_OPENGV:BOOL=ON \
57+
-DALICEVISION_USE_POPSIFT:BOOL=ON \
58+
-DALICEVISION_USE_CUDA:BOOL=ON \
59+
-DALICEVISION_USE_ONNX_GPU:BOOL=OFF \
60+
-DALICEVISION_BUILD_DOC:BOOL=OFF \
61+
-DALICEVISION_BUILD_SWIG_BINDING:BOOL=ON \
62+
-DSWIG_DIR:PATH="${AV_INSTALL}/share/swig/4.3.0" -DSWIG_EXECUTABLE:PATH="${AV_INSTALL}/bin-deps/swig" \
63+
"${AV_DEV}"
64+
65+
RUN make install -j${CPU_CORES}
66+
67+
RUN make bundle
68+
69+
RUN rm -rf "${AV_BUILD}" "${AV_DEV}" && \
70+
echo "export ALICEVISION_SENSOR_DB=${AV_BUNDLE}/share/aliceVision/cameraSensors.db" >> /etc/profile.d/alicevision.sh && \
71+
echo "export ALICEVISION_ROOT=${AV_BUNDLE}" >> /etc/profile.d/alicevision.sh

docker/Dockerfile_rocky_deps

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
ARG CUDA_VERSION
2+
ARG ROCKY_VERSION
3+
FROM nvidia/cuda:${CUDA_VERSION}-devel-rockylinux${ROCKY_VERSION}
4+
LABEL maintainer="AliceVision Team [email protected]"
5+
6+
# use CUDA_VERSION to select the image version to use
7+
# see https://hub.docker.com/r/nvidia/cuda/
8+
#
9+
# AV_VERSION=2.2.8.develop
10+
# CUDA_VERSION=11.0
11+
# ROCKY_VERSION=20.04
12+
# docker build \
13+
# --build-arg CUDA_VERSION=${CUDA_VERSION} \
14+
# --build-arg ROCKY_VERSION${ROCKY_VERSION} \
15+
# --tag alicevision/alicevision-deps:${AV_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_TAG} \
16+
# -f Dockerfile_rocky_deps .
17+
18+
# OS/Version (FILE): cat /etc/issue.net
19+
# Cuda version (ENV): $CUDA_VERSION
20+
21+
RUN dnf install -y 'dnf-command(config-manager)'
22+
RUN dnf config-manager --set-enabled devel
23+
RUN dnf install -y epel-release
24+
# RUN dnf install -y gcc-toolset-13-gcc-c++
25+
# RUN dnf remove -y gcc-g++ gcc
26+
# RUN update-alternatives --install /usr/bin/gcc gcc /opt/rh/gcc-toolset-13/root/usr/bin/gcc 60
27+
# RUN update-alternatives --install /usr/bin/g++ g++ /opt/rh/gcc-toolset-13/root/usr/bin/g++ 60
28+
# RUN update-alternatives --install /usr/bin/cpp cpp /opt/rh/gcc-toolset-13/root/usr/bin/cpp 60
29+
RUN dnf install -y ca-certificates wget
30+
RUN dnf install -y cmake git unzip
31+
RUN dnf install -y python3-devel python3-pip
32+
RUN dnf install -y pcre2-devel
33+
RUN dnf install -y xerces-c-devel
34+
RUN dnf install -y bison
35+
RUN dnf install -y diffutils which file
36+
RUN dnf install -y yasm
37+
RUN dnf install -y gfortran libasan libubsan
38+
RUN dnf update -y
39+
# RUN scl enable gcc-toolset-13 bash
40+
41+
RUN python3 -m pip install numpy
42+
43+
ENV AV_DEV=/opt/AliceVision_git \
44+
AV_BUILD=/tmp/AliceVision_build \
45+
AV_INSTALL=/opt/AliceVision_install \
46+
PATH="${PATH}:${AV_BUNDLE}"
47+
48+
COPY dl/vlfeat_K80L3.SIFT.tree ${AV_INSTALL}/share/aliceVision/
49+
RUN echo "export ALICEVISION_VOCTREE=${AV_INSTALL}/share/aliceVision/vlfeat_K80L3.SIFT.tree" > /etc/profile.d/alicevision.sh
50+
51+
COPY dl/sphereDetection_Mask-RCNN.onnx ${AV_INSTALL}/share/aliceVision/
52+
RUN echo "export ALICEVISION_SPHERE_DETECTION_MODEL=${AV_INSTALL}/share/aliceVision/sphereDetection_Mask-RCNN.onnx" > /etc/profile.d/alicevision.sh
53+
54+
COPY dl/fcn_resnet50.onnx ${AV_INSTALL}/share/aliceVision/
55+
RUN echo "export ALICEVISION_SEMANTIC_SEGMENTATION_MODEL=${AV_INSTALL}/share/aliceVision/fcn_resnet50.onnx" > /etc/profile.d/alicevision.sh
56+
57+
COPY docker/check-cpu.sh ${AV_DEV}/docker/check-cpu.sh
58+
RUN export CPU_CORES=`${AV_DEV}/docker/check-cpu.sh` && echo "Build multithreading number of cores: ${CPU_CORES}"
59+
60+
COPY CMakeLists.txt ${AV_DEV}/
61+
COPY src/cmake/Dependencies.cmake ${AV_DEV}/src/cmake/
62+
63+
COPY dl/deps ${AV_BUILD}/external/download/
64+
65+
WORKDIR "${AV_BUILD}"
66+
RUN cmake "${AV_DEV}" \
67+
-DCMAKE_BUILD_TYPE=Release \
68+
-DALICEVISION_BUILD_DEPENDENCIES:BOOL=ON \
69+
-DAV_BUILD_ZLIB:BOOL=ON \
70+
-DAV_BUILD_ALICEVISION:BOOL=OFF \
71+
-DAV_BUILD_CCTAG:BOOL=OFF \
72+
-DCMAKE_INSTALL_PREFIX="${AV_INSTALL}"
73+
74+
# Symlink lib64 to lib as qtOIIO expects to find OIIO in lib64
75+
RUN mkdir -p "${AV_INSTALL}/lib" && \
76+
ln -s lib "${AV_INSTALL}/lib64"
77+
78+
RUN test -e /usr/local/cuda/lib64/libcublas.so || ln -s /usr/lib/x86_64-linux-gnu/libcublas.so /usr/local/cuda/lib64/libcublas.so
79+
80+
# RUN make -j ${CPU_CORES} onnxruntime
81+
# RUN make -j ${CPU_CORES} turbojpeg
82+
# RUN make -j ${CPU_CORES} boost
83+
# RUN make -j ${CPU_CORES} openexr
84+
# RUN make -j ${CPU_CORES} tbb
85+
# RUN make -j ${CPU_CORES} assimp
86+
# RUN make -j ${CPU_CORES} geogram
87+
# RUN make -j ${CPU_CORES} eigen
88+
# RUN make -j ${CPU_CORES} opengv
89+
# RUN make -j ${CPU_CORES} lapack
90+
# RUN make -j ${CPU_CORES} suitesparse
91+
# RUN make -j ${CPU_CORES} ceres
92+
# RUN make -j ${CPU_CORES} tiff
93+
# RUN make -j ${CPU_CORES} png
94+
# RUN make -j ${CPU_CORES} libraw
95+
# RUN make -j ${CPU_CORES} openimageio
96+
# RUN make -j ${CPU_CORES} alembic
97+
# RUN make -j ${CPU_CORES} ffmpeg
98+
# RUN make -j ${CPU_CORES} opencv
99+
# RUN make -j ${CPU_CORES} expat
100+
# RUN make -j ${CPU_CORES} SWIG
101+
# RUN make -j ${CPU_CORES} E57Format
102+
103+
# RUN make -j ${CPU_CORES} popsift
104+
# RUN make -j ${CPU_CORES} cctag
105+
106+
RUN cmake --build . -j ${CPU_CORES} && \
107+
mv "${AV_INSTALL}/bin" "${AV_INSTALL}/bin-deps" && \
108+
rm -rf "${AV_BUILD}"

docker/build-all.sh

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,5 @@ test -e docker/fetch.sh || {
99
exit 1
1010
}
1111

12-
CUDA_VERSION=11.0 UBUNTU_VERSION=20.04 docker/build-ubuntu.sh
13-
CUDA_VERSION=11.0 UBUNTU_VERSION=18.04 docker/build-ubuntu.sh
14-
CUDA_VERSION=10.2 UBUNTU_VERSION=18.04 docker/build-ubuntu.sh
15-
CUDA_VERSION=9.2 UBUNTU_VERSION=18.04 docker/build-ubuntu.sh
16-
17-
CUDA_VERSION=10.2 CENTOS_VERSION=7 docker/build-centos.sh
18-
CUDA_VERSION=9.2 CENTOS_VERSION=7 docker/build-centos.sh
12+
CUDA_VERSION=12.1.0 UBUNTU_VERSION=22.04 docker/build-ubuntu.sh
13+
CUDA_VERSION=12.1.0 ROCKY_VERSION=9 docker/build-rocky.sh

docker/build-rocky.sh

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/bin/bash
2+
set -e
3+
4+
test -e docker/fetch.sh || {
5+
echo This script must be run from the top level of the AliceVision tree
6+
exit 1
7+
}
8+
9+
test -z "$AV_DEPS_VERSION" && AV_DEPS_VERSION=2024.12.09
10+
test -z "$AV_VERSION" && AV_VERSION="$(git rev-parse --abbrev-ref HEAD)-$(git rev-parse --short HEAD)"
11+
test -z "$CUDA_VERSION" && CUDA_VERSION=12.1.0
12+
test -z "$ROCKY_VERSION" && ROCKY_VERSION=9
13+
test -z "$REPO_OWNER" && REPO_OWNER=alicevision
14+
test -z "$DOCKER_REGISTRY" && DOCKER_REGISTRY=docker.io
15+
16+
echo "AV_VERSION: $AV_VERSION"
17+
echo "AV_DEPS_VERSION: $AV_DEPS_VERSION"
18+
echo "CUDA_VERSION: $CUDA_VERSION"
19+
echo "ROCKY_VERSION: $ROCKY_VERSION"
20+
21+
echo "--== FETCH DEPENDENCIES ==--"
22+
23+
./docker/fetch.sh
24+
25+
DEPS_DOCKER_TAG=${REPO_OWNER}/alicevision-deps:${AV_DEPS_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_VERSION}
26+
27+
echo "--== BUILD DEPENDENCIES ==--"
28+
29+
## DEPENDENCIES
30+
docker build \
31+
--rm \
32+
--build-arg CUDA_VERSION=${CUDA_VERSION} \
33+
--build-arg ROCKY_VERSION=${ROCKY_VERSION} \
34+
--tag ${DEPS_DOCKER_TAG} \
35+
-f docker/Dockerfile_rocky_deps .
36+
37+
echo ""
38+
echo " To upload results:"
39+
echo "docker push ${DEPS_DOCKER_TAG}"
40+
echo ""
41+
42+
43+
DOCKER_TAG=${REPO_OWNER}/alicevision:${AV_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_VERSION}
44+
45+
echo "--== BUILD ALICEVISION ==--"
46+
47+
## ALICEVISION
48+
docker build \
49+
--rm \
50+
--build-arg CUDA_VERSION=${CUDA_VERSION} \
51+
--build-arg ROCKY_VERSION=${ROCKY_VERSION} \
52+
--build-arg AV_DEPS_VERSION=${AV_DEPS_VERSION} \
53+
--build-arg AV_VERSION=${AV_VERSION} \
54+
--tag ${DOCKER_TAG} \
55+
-f docker/Dockerfile_rocky .
56+
57+
echo ""
58+
echo " To upload results:"
59+
echo ""
60+
echo "docker push ${DEPS_DOCKER_TAG}"
61+
echo "docker push ${DOCKER_TAG}"
62+
echo ""

0 commit comments

Comments
 (0)