3d_model / Dockerfile.base
Azan
Clean deployment build (Squashed)
7a87926
# Base image with heavy dependencies (COLMAP, hloc, LightGlue)
# This image is built separately and cached to save 20-25 minutes per build
# Using devel image instead of runtime to include CUDA development tools (nvcc) needed for gsplat
FROM pytorch/pytorch:2.1.0-cuda11.8-cudnn8-devel
# Set working directory
WORKDIR /app
# Set timezone and non-interactive mode to avoid prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Install system dependencies for COLMAP
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
build-essential \
cmake \
git \
libeigen3-dev \
libfreeimage-dev \
libmetis-dev \
libgoogle-glog-dev \
libgflags-dev \
libglew-dev \
libsuitesparse-dev \
libboost-all-dev \
libatlas-base-dev \
libblas-dev \
liblapack-dev \
&& rm -rf /var/lib/apt/lists/*
# Install COLMAP (this takes ~15-20 minutes)
# COLMAP will automatically download and build Ceres Solver as a dependency
RUN git clone --recursive https://github.com/colmap/colmap.git /tmp/colmap && \
cd /tmp/colmap && \
git checkout 3.8 && \
git submodule update --init --recursive && \
mkdir build && \
cd build && \
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCERES_SOLVER_AUTO=ON && \
make -j$(nproc) && \
make install && \
cd / && \
rm -rf /tmp/colmap && \
# Verify COLMAP installation
colmap -h || echo "COLMAP installed"
# Install Python dependencies that don't change often
# Note: Pin PyTorch to 2.1.0 to match CUDA 11.8 in base image (avoid version mismatch with gsplat)
RUN pip install --no-cache-dir \
"torch==2.1.0" \
"torchvision==0.16.0" \
"numpy<2.0" \
opencv-python \
pillow \
tqdm \
huggingface-hub \
safetensors \
einops \
omegaconf \
"pycolmap>=0.4.0" \
"typer[all]>=0.9.0" \
"matplotlib>=3.5.0" \
"plotly>=5.0.0" \
imageio \
xformers \
open3d \
tensorboard
# Install LightGlue (from git)
RUN pip install --no-cache-dir git+https://github.com/cvg/LightGlue.git
# Install hloc (Hierarchical Localization)
RUN git clone https://github.com/cvg/Hierarchical-Localization.git /tmp/hloc && \
cd /tmp/hloc && \
pip install --no-cache-dir -e . && \
cd / && \
rm -rf /tmp/hloc
# Set environment variables
ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH=/app
# Label for identification
LABEL org.opencontainers.image.title="YLFF Base Image"
LABEL org.opencontainers.image.description="Base image with COLMAP, hloc, and LightGlue pre-installed"