FROM ubuntu:24.04 AS builder ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ pkg-config \ qtbase5-dev \ qt5-qmake \ qtdeclarative5-dev \ libqt5opengl5-dev \ libpcl-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . . RUN mkdir -p build && cd build \ && qmake ../DotsToSirface.pro 'DEFINES+=PCL_ENABLED' \ && make -j"$(nproc)" FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive ENV DOTSTOSIRFACE_BIN=/usr/local/bin/DotsToSirface ENV PIPELINE_CONFIG=/app/docker/default_pipeline.json ENV PYTHONUNBUFFERED=1 RUN apt-get update && apt-get install -y --no-install-recommends \ python3 \ python3-pip \ python3-venv \ libqt5core5t64 \ libqt5gui5t64 \ libqt5widgets5t64 \ libqt5opengl5t64 \ libqt5qml5 \ libqt5quick5 \ libqt5quickwidgets5 \ libqt5network5t64 \ libpcl-common1.14 \ libpcl-io1.14 \ libpcl-filters1.14 \ libpcl-features1.14 \ libpcl-kdtree1.14 \ libpcl-search1.14 \ libpcl-surface1.14 \ libgl1 \ && rm -rf /var/lib/apt/lists/* COPY --from=builder /src/build/DotsToSirface /usr/local/bin/DotsToSirface COPY api /app/api COPY web /app/web COPY docker /app/docker COPY presets /app/presets WORKDIR /app/api RUN python3 -m venv /opt/venv \ && /opt/venv/bin/pip install --no-cache-dir -r requirements.txt ENV PATH="/opt/venv/bin:${PATH}" EXPOSE 8080 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]