# syntax=docker/dockerfile:1.7 FROM rust:1.94.1-slim-bookworm AS builder WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends \ apt-utils \ pkg-config \ libssl-dev \ libvips-dev \ git \ ca-certificates \ curl \ && rm -rf /var/lib/apt/lists/* COPY Cargo.toml Cargo.lock ./ COPY src ./src RUN cargo build --release FROM debian:bookworm-slim AS runtime WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends \ apt-utils \ pkg-config \ git \ ca-certificates \ libssl3 \ libvips42 \ libvips-tools \ libvips-dev \ libwebp7 \ libpng16-16 \ libjpeg62-turbo \ libheif1 \ libaom3 \ libde265-0 \ libx265-199 \ && rm -rf /var/lib/apt/lists/* \ && useradd --system --create-home --uid 10001 app COPY --from=builder /app/target/release/Web /usr/local/bin/web-api RUN mkdir -p /app/uploads/originals /app/uploads/variants \ && chown -R app:app /app ENV PORT=3000 ENV IMAGE_UPLOAD_DIR=/app/uploads/originals ENV IMAGE_VARIANT_DIR=/app/uploads/variants USER app EXPOSE 3000 CMD ["/usr/local/bin/web-api"]