# syntax=docker/dockerfile:1.7 FROM rust:1.96-bookworm AS builder WORKDIR /build RUN apt-get update \ && apt-get install --yes --no-install-recommends \ libssl-dev \ pkg-config \ && rm -rf /var/lib/apt/lists/* COPY Cargo.toml Cargo.lock ./ COPY src ./src COPY migrations ./migrations RUN cargo build --locked --release --bin backend \ && strip target/release/backend FROM debian:bookworm-slim AS runtime ARG APP_UID=10001 ARG APP_GID=10001 RUN apt-get update \ && apt-get install --yes --no-install-recommends \ ca-certificates \ chromium \ curl \ fonts-liberation \ fonts-noto-color-emoji \ libssl3 \ tini \ && rm -rf /var/lib/apt/lists/* \ && groupadd --gid "${APP_GID}" app \ && useradd --uid "${APP_UID}" --gid "${APP_GID}" --create-home --shell /usr/sbin/nologin app \ && install -d --owner=app --group=app /app /data/media /tmp/leads-extractor-cache WORKDIR /app COPY --from=builder /build/target/release/backend /usr/local/bin/leads-extractor COPY --from=builder /build/migrations ./migrations ENV SERVER_HOST=0.0.0.0 \ SERVER_PORT=8080 \ MEDIA_DIR=/data/media \ BROWSER_NO_SANDBOX=true \ RUST_LOG=backend=info \ XDG_CACHE_HOME=/tmp/leads-extractor-cache USER app:app EXPOSE 8080 ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["/usr/local/bin/leads-extractor"]