# Build stage FROM rust:1.82-slim-bookworm AS builder WORKDIR /app # Install build dependencies RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ && rm -rf /var/lib/apt/lists/* # Copy manifests COPY Cargo.toml Cargo.lock ./ COPY crates ./crates # Build release binary RUN cargo build --release --bin mem # Runtime stage FROM debian:bookworm-slim WORKDIR /app # Install runtime dependencies RUN apt-get update && apt-get install -y \ ca-certificates \ libssl3 \ && rm -rf /var/lib/apt/lists/* # Copy binary from builder COPY --from=builder /app/target/release/mem /usr/local/bin/mem # Copy templates and queries COPY templates ./templates COPY queries ./queries # Create non-root user RUN useradd -r -u 1000 memuser USER memuser # Default port EXPOSE 8080 # Health check HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8080/health || exit 1 # Default command: start HTTP server ENTRYPOINT ["mem"] CMD ["serve", "--port", "8080"]