genome-sh 0.1.0

The jq of genomics. Fast, local, human-readable variant analysis.
# Stage 1: Build the Rust binary
FROM rust:1.83-slim-bookworm AS builder

RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY Cargo.toml Cargo.lock ./
COPY src/ src/

RUN cargo build --release

# Stage 2: Build the database
FROM python:3.12-slim-bookworm AS db-builder

WORKDIR /app
COPY pipeline/ pipeline/
RUN pip install --no-cache-dir requests tqdm

# Build with ClinVar only for now (add more sources later).
# Full build takes hours and downloads ~25 GB. Run separately for production.
RUN mkdir -p data/raw && \
    python pipeline/build_db.py --output data/variants.db --sources clinvar

# Stage 3: Runtime
FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY --from=builder /app/target/release/genome /usr/local/bin/genome
COPY --from=db-builder /app/data/variants.db /app/data/variants.db

EXPOSE 3042

HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
    CMD curl -f http://localhost:3042/health || exit 1

CMD ["genome", "serve", "--db", "/app/data/variants.db", "--host", "0.0.0.0", "--port", "3042"]