# colmap.Dockerfile
# 2025-11-21
# by Gernot Walzl

# This Dockerfile builds COLMAP.
# Homepage: https://colmap.github.io/
# Based on: https://github.com/colmap/colmap/blob/main/docker/Dockerfile
# Usage: docker build -o=output -f colmap.Dockerfile .

ARG UBUNTU_VERSION=24.04
ARG NVIDIA_CUDA_VERSION=12.9.1

FROM nvidia/cuda:${NVIDIA_CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} AS build

ARG COLMAP_VERSION=3.13.0

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y \
        wget \
        cmake \
        ninja-build \
        build-essential \
        libboost-program-options-dev \
        libboost-graph-dev \
        libboost-system-dev \
        libeigen3-dev \
        libfreeimage-dev \
        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 \
        libomp-dev \
        libmkl-full-dev

RUN wget -O colmap-${COLMAP_VERSION}.tar.gz \
        https://github.com/colmap/colmap/archive/refs/tags/${COLMAP_VERSION}.tar.gz && \
    tar xvf colmap-${COLMAP_VERSION}.tar.gz
RUN cd colmap-${COLMAP_VERSION} && \
    mkdir build && \
    cd build && \
    cmake .. \
        -GNinja \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_CUDA_ARCHITECTURES=all-major \
        -DBLA_VENDOR=Intel10_64lp && \
    DESTDIR=/colmap-install ninja install/strip

FROM scratch
COPY --from=build /colmap-install/ /
