Add COLMAP Dockerfile
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
ARG UBUNTU_VERSION=24.04
|
||||
ARG NVIDIA_CUDA_VERSION=12.9.1
|
||||
|
||||
#
|
||||
# Docker builder stage.
|
||||
#
|
||||
FROM nvidia/cuda:${NVIDIA_CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} AS builder
|
||||
|
||||
ARG COLMAP_GIT_COMMIT=main
|
||||
ARG CUDA_ARCHITECTURES=86
|
||||
ENV QT_XCB_GL_INTEGRATION=xcb_egl
|
||||
|
||||
# Prevent stop building ubuntu at time zone selection.
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Prepare and empty machine for building.
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
git \
|
||||
cmake \
|
||||
ninja-build \
|
||||
build-essential \
|
||||
libboost-program-options-dev \
|
||||
libboost-graph-dev \
|
||||
libboost-system-dev \
|
||||
libeigen3-dev \
|
||||
libopenimageio-dev \
|
||||
openimageio-tools \
|
||||
libmetis-dev \
|
||||
libgoogle-glog-dev \
|
||||
libgtest-dev \
|
||||
libgmock-dev \
|
||||
libsqlite3-dev \
|
||||
libglew-dev \
|
||||
qt6-base-dev \
|
||||
libqt6opengl6-dev \
|
||||
libqt6openglwidgets6 \
|
||||
libcgal-dev \
|
||||
libceres-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libssl-dev \
|
||||
libmkl-full-dev
|
||||
|
||||
# Fix issue in Ubuntu's openimageio CMake config.
|
||||
# We don't depend on any of openimageio's OpenCV functionality,
|
||||
# but it still requires the OpenCV include directory to exist.
|
||||
RUN mkdir -p /usr/include/opencv4
|
||||
|
||||
# Build and install COLMAP.
|
||||
RUN git clone https://github.com/colmap/colmap.git
|
||||
RUN cd colmap && \
|
||||
git fetch https://github.com/colmap/colmap.git ${COLMAP_GIT_COMMIT} && \
|
||||
git checkout FETCH_HEAD && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake .. \
|
||||
-GNinja \
|
||||
-DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCHITECTURES} \
|
||||
-DCMAKE_INSTALL_PREFIX=/colmap-install \
|
||||
-DBLA_VENDOR=Intel10_64lp && \
|
||||
ninja install
|
||||
|
||||
#
|
||||
# Docker runtime stage.
|
||||
#
|
||||
FROM nvidia/cuda:${NVIDIA_CUDA_VERSION}-runtime-ubuntu${UBUNTU_VERSION} AS runtime
|
||||
|
||||
# Minimal dependencies to run COLMAP binary compiled in the builder stage.
|
||||
# Note: this reduces the size of the final image considerably, since all the
|
||||
# build dependencies are not needed.
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends --no-install-suggests \
|
||||
libboost-program-options1.83.0 \
|
||||
libc6 \
|
||||
libomp5 \
|
||||
libopengl0 \
|
||||
libmetis5 \
|
||||
libceres4t64 \
|
||||
libopenimageio2.4t64 \
|
||||
libgcc-s1 \
|
||||
libgl1 \
|
||||
libglew2.2 \
|
||||
libgoogle-glog0v6t64 \
|
||||
libqt6core6 \
|
||||
libqt6gui6 \
|
||||
libqt6widgets6 \
|
||||
libqt6openglwidgets6 \
|
||||
libcurl4 \
|
||||
libssl3t64 \
|
||||
libmkl-locale \
|
||||
libmkl-intel-lp64 \
|
||||
libmkl-intel-thread \
|
||||
libmkl-core && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Copy all files from /colmap-install/ in the builder stage to /usr/local/ in
|
||||
# the runtime stage. This simulates installing COLMAP in the default location
|
||||
# (/usr/local/), which simplifies environment variables. It also allows the user
|
||||
# of this Docker image to use it as a base image for compiling against COLMAP as
|
||||
# a library. For instance, CMake will be able to find COLMAP easily with the
|
||||
# command: find_package(COLMAP REQUIRED).
|
||||
COPY --from=builder /colmap-install/ /usr/local/
|
||||
@@ -0,0 +1,9 @@
|
||||
services:
|
||||
|
||||
colmap:
|
||||
build:
|
||||
context: .
|
||||
image: colmap:dev
|
||||
extends:
|
||||
file: ../config.yml
|
||||
service: win-gui-app
|
||||
@@ -0,0 +1 @@
|
||||
docker compose run --rm -it --name colmap colmap
|
||||
Reference in New Issue
Block a user