# 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"]