diff --git a/Dockerfile b/Dockerfile index 9b9f1e2..707ceda 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,12 +4,24 @@ FROM rust:1.91 AS builder WORKDIR /usr/src/pop_imap_importer # Copy manifests first to leverage Docker layer caching -COPY src/ Cargo.* ./ +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 cargo build --release - -RUN cargo install --path . +RUN --mount=type=cache,target=/usr/local/cargo/registry \ + ls -lh target/release && \ + cargo build --release # Runtime stage FROM debian:bookworm-slim @@ -20,7 +32,7 @@ RUN apt-get update && \ 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/local/cargo/bin/pop_imap_importer /usr/local/bin/pop_imap_importer +COPY --from=builder /usr/src/pop_imap_importer/target/release/rs_pop_imap_importer /usr/local/bin/pop_imap_importer CMD ["pop_imap_importer"]