FROM rust:latest AS builder
WORKDIR /app

# Non‑interactive apt
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ca-certificates gcc libssl-dev libpq-dev pkg-config && \
    rm -rf /var/lib/apt/lists/* && \
    cargo install sqlx-cli --no-default-features --features native-tls,postgres

COPY Cargo.toml Cargo.lock ./
COPY src ./src
# If you have a pre‑generated sqlx-data.json, copy it too:
COPY .sqlx ./.sqlx

ENV SQLX_OFFLINE=true
RUN cargo build --release && \
    strip target/release/health-backend

FROM debian:bookworm-slim
RUN apt-get update && \
    apt-get install -y --no-install-recommends ca-certificates && \
    rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/health-backend /usr/local/bin/api
COPY --from=builder /app/.sqlx /app/.sqlx
EXPOSE 3000
RUN addgroup --system appgroup && \
    adduser --system --ingroup appgroup appuser
USER appuser
HEALTHCHECK --interval=15s --timeout=3s \
    CMD curl -f http://localhost:3000/health || exit 1
ENTRYPOINT ["/usr/local/bin/api"]
