# Stage 1: Build FROM rust:1.94-bookworm AS builder WORKDIR /usr/src/app # Cache dependency build: only re-runs when Cargo.toml/lock change COPY Cargo.toml Cargo.lock* ./ RUN mkdir src && echo 'fn main() {}' > src/main.rs && cargo build --release && rm -rf src # Now copy real source and build (dependencies already compiled) COPY src/ src/ RUN touch src/main.rs && cargo build --release # Stage 2: Runtime FROM debian:bookworm-slim RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates curl && \ rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/src/app/target/release/maps-backend /usr/local/bin/maps-backend EXPOSE 8080 CMD ["maps-backend"]