# syntax=docker/dockerfile:1 FROM rust:1-slim AS builder WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ pkg-config \ libssl-dev \ libpq-dev \ libjpeg-dev \ libpng-dev \ && rm -rf /var/lib/apt/lists/* COPY Cargo.toml Cargo.lock ./ COPY src ./src COPY migrations ./migrations COPY tests ./tests COPY diesel.toml ./ RUN cargo build --release --bin paperless-backend --bin worker RUN cargo install diesel_cli --no-default-features --features postgres FROM debian:bookworm-slim AS runtime WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ libssl3 \ libpq5 \ libjpeg62-turbo \ libpng16-16 \ && rm -rf /var/lib/apt/lists/* \ && useradd --system --create-home --uid 10001 appuser COPY --from=builder /app/target/release/paperless-backend /usr/local/bin/paperless-backend COPY --from=builder /app/target/release/worker /usr/local/bin/paperless-worker COPY --from=builder /usr/local/cargo/bin/diesel /usr/local/bin/diesel COPY migrations ./migrations COPY diesel.toml ./ ENV RUST_LOG=info USER appuser EXPOSE 3000 ENTRYPOINT ["/usr/local/bin/paperless-backend"]