60 lines
1.4 KiB
Docker
Raw Normal View History

# Multi-stage build for Provisioning RAG Service
# Stage 1: Builder
FROM rust:1.80.1 as builder
WORKDIR /app
# Install dependencies
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy workspace and source
COPY Cargo.toml Cargo.lock ./
COPY provisioning/platform/rag ./rag
COPY provisioning/platform/rag/src ./src
COPY provisioning/platform/rag/benches ./benches
# Build the orchestrator binary in release mode
RUN cd rag && cargo build --release \
&& cp target/release/provisioning-rag /app/provisioning-rag
# Stage 2: Runtime
FROM debian:bookworm-slim
WORKDIR /app
# Install runtime dependencies
RUN apt-get update && apt-get install -y \
ca-certificates \
curl \
openssl \
&& rm -rf /var/lib/apt/lists/*
# Copy binary from builder
COPY --from=builder /app/provisioning-rag /app/
# Create non-root user for security
RUN useradd -m -u 1000 provisioning && \
chown -R provisioning:provisioning /app
USER provisioning
# Environment variables
ENV PROVISIONING_LOG_LEVEL=info
ENV PROVISIONING_API_HOST=0.0.0.0
ENV PROVISIONING_API_PORT=9090
ENV PROVISIONING_CACHE_SIZE=1000
ENV PROVISIONING_CACHE_TTL_SECS=3600
# Expose API port
EXPOSE 9090
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:9090/health || exit 1
# Start the service
CMD ["/app/provisioning-rag"]