# syntax=docker/dockerfile:1.7

# --- Builder Stage ---
FROM ubuntu:22.04 AS builder
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential ccache cmake ninja-build git pkg-config \
    libcurl4-openssl-dev libssl-dev zlib1g-dev \
    libmariadb-dev libmariadb-dev-compat \
    libsqlite3-dev python3 libjsoncpp-dev uuid-dev ca-certificates \
    && rm -rf /var/lib/apt/lists/*

RUN rm -rf /usr/include/mysql && ln -s /usr/include/mariadb /usr/include/mysql

WORKDIR /app
COPY . /app

RUN --mount=type=cache,target=/app/.cache/cpm \
    --mount=type=cache,target=/root/.cache/ccache \
    cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
    && cmake --build build

# --- Runtime Stage ---
FROM ubuntu:22.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends \
    libcurl4 libssl3 ca-certificates libstdc++6 libmariadb3 libjsoncpp25 libuuid1 \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY --from=builder /app/build/visione-backend     /app/visione-backend
COPY --from=builder /app/build/openapi             /app/build/openapi
COPY --from=builder /app/config.json               /app/config.json
COPY --from=builder /app/migrations                /app/migrations

EXPOSE 5555

ENTRYPOINT ["/app/visione-backend"]
