# 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"]

