# Multi-stage build for Poimen Memory Service (Rust) # Stage 1: Builder FROM rust:1-bookworm as builder WORKDIR /build # Build settings ENV SQLX_OFFLINE=true # Copy source COPY . . # Build release binary with space-efficient cleanup RUN cargo build --release -p mem-cli --locked && \ strip target/release/mem && \ # Aggressive cleanup to free disk space rm -rf target/release/deps && \ rm -rf target/release/build && \ rm -rf target/release/incremental && \ rm -rf target/release/.fingerprint && \ rm -rf .cargo/registry/cache && \ rm -rf .cargo/registry/index && \ rm -rf .cargo/git # Stage 2: Runtime FROM debian:bookworm-slim WORKDIR /app # Install runtime dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ libssl3 \ postgresql-client \ curl \ && rm -rf /var/lib/apt/lists/* # Copy binary from builder COPY --from=builder /build/target/release/mem /app/mem # Expose port EXPOSE 8080 # Health check HEALTHCHECK --interval=10s --timeout=5s --start-period=10s --retries=3 \ CMD curl -f http://localhost:8080/health || exit 1 # Run CMD ["/app/mem"]