# Build stage
FROM rust:latest AS builder

# Install build dependencies for nokhwa (v4l2) and bindgen (clang)
RUN apt-get update && apt-get install -y \
    libv4l-dev \
    libudev-dev \
    pkg-config \
    clang \
    libclang-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copy manifests first for better caching
COPY Cargo.toml Cargo.lock ./
COPY src ./src
COPY skill.md ./

# Build
RUN cargo build --release

# Runtime stage - minimal image
FROM debian:bookworm-slim

# Install runtime dependencies for v4l2 camera access
RUN apt-get update && apt-get install -y \
    libv4l-0 \
    && rm -rf /var/lib/apt/lists/*

# Create non-root user
RUN useradd -m -u 1000 trng

WORKDIR /app

# Copy binary from builder
COPY --from=builder /app/target/release/camera-qrng .

# Set ownership
RUN chown -R trng:trng /app

USER trng

ENV PORT=8787

EXPOSE 8787

CMD ["./camera-qrng"]
