# === Multi-stage Rust build for Runeforge ===
FROM rust:1.80-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 rust-toolchain.toml ./

# Copy source
COPY src/ ./src/
COPY schemas/ ./schemas/
COPY resources/ ./resources/

# Build for release
RUN cargo build --release --locked

# === Runtime image ===
FROM debian:bookworm-slim

WORKDIR /app

# Install runtime dependencies
RUN apt-get update && apt-get install -y \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# Copy binary and resources
COPY --from=builder /app/target/release/runeforge /usr/local/bin/
COPY --from=builder /app/schemas/ ./schemas/
COPY --from=builder /app/resources/ ./resources/

# Create non-root user
RUN useradd -r -s /bin/false -m runeforge
USER runeforge

EXPOSE 8080

# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD runeforge --help || exit 1

# Default command
ENTRYPOINT ["runeforge"]
CMD ["--help"]

# Metadata
LABEL org.opencontainers.image.title="Runeforge"
LABEL org.opencontainers.image.description="Blueprint to optimal stack JSON converter"
LABEL org.opencontainers.image.source="https://github.com/rune-ecosystem/forge"
LABEL org.opencontainers.image.licenses="MIT"