# Scheiben S0 und S1 aus docs/07-mvp-plan.md.
#
# Das Projekt hat KEINE npm-Abhaengigkeiten: Node 24 bringt SQLite
# (node:sqlite), WebSocket und fetch mit und fuehrt TypeScript direkt aus
# (Type Stripping). Deshalb gibt es weder eine deps-Stufe noch einen
# Build-Schritt. Siehe ADR-0001 und ADR-0004.

# ---------- whisper.cpp bauen ----------
FROM debian:bookworm-slim AS whisper
ARG WHISPER_VERSION=v1.7.4
RUN apt-get update && apt-get install -y --no-install-recommends \
      build-essential cmake git ca-certificates \
    && rm -rf /var/lib/apt/lists/*
RUN git clone --depth 1 --branch ${WHISPER_VERSION} \
      https://github.com/ggerganov/whisper.cpp /src
WORKDIR /src
RUN cmake -B build -DCMAKE_BUILD_TYPE=Release -DWHISPER_BUILD_TESTS=OFF \
      -DWHISPER_BUILD_EXAMPLES=ON \
    && cmake --build build --config Release -j"$(nproc)" \
    && mkdir -p /out \
    && cp build/bin/whisper-cli /out/ \
    && find build -name 'libwhisper.so*' -o -name 'libggml*.so' | xargs -r cp -P -t /out/

# ---------- Laufzeit ----------
FROM node:24-bookworm-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
      ffmpeg fonts-dejavu-core ca-certificates curl \
    && rm -rf /var/lib/apt/lists/*

COPY --from=whisper /out/ /usr/local/lib/whisper/
RUN ln -s /usr/local/lib/whisper/whisper-cli /usr/local/bin/whisper-cli \
    && echo /usr/local/lib/whisper > /etc/ld.so.conf.d/whisper.conf \
    && ldconfig

WORKDIR /app
# package.json zuerst: sie enthaelt die "imports"-Map, ueber die #core/... aufgeloest wird
COPY package.json ./
COPY packages/ ./packages/
COPY apps/ ./apps/
COPY docker/ ./docker/

# Datenbank und Sprachmodelle liegen in benannten Volumes, nicht im
# Bind-Mount - siehe docs/decisions/ADR-0004-docker.md
ENV WHISPER_BIN=/usr/local/bin/whisper-cli \
    MODEL_DIR=/models \
    DB_DIR=/db \
    WORK_DIR=/work \
    CLIPS_DIR=/app/data/clips \
    REPLAY_DIR=/replay \
    CONFIG_DIR=/app/config \
    NODE_ENV=production \
    NODE_OPTIONS=--disable-warning=ExperimentalWarning \
    BIND_HOST=0.0.0.0

EXPOSE 4790 4791 4792

ENTRYPOINT ["node", "/app/docker/entrypoint.ts"]
CMD ["help"]
