# Build stage FROM rust:1.75-slim 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 source code COPY src ./src # Build release binary RUN cargo build --release # Runtime stage FROM debian:bookworm-slim # Install runtime dependencies RUN apt-get update && apt-get install -y \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # Create non-root user RUN useradd -m -u 1000 registry && \ mkdir -p /app/data && \ chown -R registry:registry /app USER registry WORKDIR /app # Copy binary from builder COPY --from=builder /app/target/release/extension-registry /usr/local/bin/ # Expose port EXPOSE 8082 # Health check HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8082/api/v1/health || exit 1 # Run service CMD ["extension-registry"]