# Build stage FROM rust:1.91 AS builder WORKDIR /usr/src/pop_imap_importer # Copy manifests first to leverage Docker layer caching COPY Cargo.* ./ # Create a dummy src/main.rs file to build dependencies RUN mkdir -p src && \ echo "fn main() {}" > src/main.rs # Build dependencies only - this will be cached as long as Cargo.toml/Cargo.lock don't change RUN --mount=type=cache,target=/usr/local/cargo/registry \ cargo build --release # Copy the actual source code COPY src src RUN touch src/main.rs # Build the actual application RUN --mount=type=cache,target=/usr/local/cargo/registry \ ls -lh target/release && \ cargo build --release # Runtime stage FROM debian:bookworm-slim # Install CA certificates and OpenSSL runtime libraries RUN apt-get update && \ apt-get install -y ca-certificates libssl3 && \ rm -rf /var/lib/apt/lists/* # RUN apt-get update && apt-get install -y extra-runtime-dependencies && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/src/pop_imap_importer/target/release/rs_pop_imap_importer /usr/local/bin/pop_imap_importer CMD ["pop_imap_importer"]