# Tier-1 companion image — multi-stage.
#
# Per `_docs/02_document/deployment/containerization.md` § Component Dockerfiles.
# Concrete deps land with the consuming component tasks; bootstrap (AZ-263)
# ships the multi-stage skeleton + healthcheck wiring.

# Stage 1: system deps -------------------------------------------------------
FROM ubuntu:22.04 AS system-deps
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
        ca-certificates \
        build-essential \
        cmake \
        git \
        libpq-dev \
        python3.10 \
        python3.10-venv \
        python3-pip \
    && rm -rf /var/lib/apt/lists/*

# Stage 2: python deps -------------------------------------------------------
FROM system-deps AS python-deps
WORKDIR /opt/gps-denied
COPY pyproject.toml ./
RUN python3 -m venv /opt/venv \
    && /opt/venv/bin/pip install --upgrade pip \
    && /opt/venv/bin/pip install --no-cache-dir -e ".[dev]"
ENV PATH="/opt/venv/bin:${PATH}"

# Stage 3: native build ------------------------------------------------------
FROM python-deps AS cpp-build
WORKDIR /opt/gps-denied
COPY . .
RUN cmake -S . -B build -DBUILD_TESTING=OFF \
    && cmake --build build --parallel

# Stage 4: runtime -----------------------------------------------------------
FROM ubuntu:22.04 AS runtime
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
        ca-certificates \
        python3.10 \
        libpq5 \
    && rm -rf /var/lib/apt/lists/*
COPY --from=python-deps /opt/venv /opt/venv
COPY --from=cpp-build /opt/gps-denied/build /opt/gps-denied/build
COPY --from=cpp-build /opt/gps-denied/src /opt/gps-denied/src
ENV PATH="/opt/venv/bin:${PATH}"
ENV PYTHONPATH="/opt/gps-denied/src"
WORKDIR /opt/gps-denied

HEALTHCHECK --interval=10s --timeout=3s --start-period=15s --retries=3 \
    CMD python3 -m gps_denied_onboard.healthcheck || exit 1

ENTRYPOINT ["python3", "-m", "gps_denied_onboard.runtime_root"]
