# syntax=docker/dockerfile:1.7

FROM rust:1-bookworm AS builder
WORKDIR /app

# Build the server, scrape CLI, insert worker, and VPN rotator binaries.
COPY Cargo.toml Cargo.lock ./
COPY crates ./crates
COPY src ./src
COPY config ./config
RUN cargo build --locked --release --bin dexter-sentinel --bin dexter-scrape --bin dexter-insert-worker --bin vpn-rotator

FROM debian:bookworm-slim AS runtime
RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates curl \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
RUN useradd --system --create-home --home-dir /home/dexter --shell /usr/sbin/nologin dexter

COPY --from=builder /app/target/release/dexter-sentinel /usr/local/bin/dexter-sentinel
COPY --from=builder /app/target/release/dexter-scrape /usr/local/bin/dexter-scrape
COPY --from=builder /app/target/release/dexter-insert-worker /usr/local/bin/dexter-insert-worker
COPY --from=builder /app/target/release/vpn-rotator /usr/local/bin/vpn-rotator
COPY --from=builder --chown=dexter:dexter /app/config ./config

ENV HOST=0.0.0.0 \
    PORT=8080 \
    RUST_LOG=info

EXPOSE 8080
USER dexter

ENTRYPOINT ["/usr/local/bin/dexter-sentinel"]
