ci / test (push) Successful in 29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
2.0 KiB
Docker
39 lines
2.0 KiB
Docker
# whisper.cpp whisper-server für Maxwell (sm_52, Quadro M4000) und Pascal (sm_61, Quadro P2000).
|
|
# CUDA 12 ist Pflicht: CUDA 13 unterstützt Maxwell/Pascal nicht mehr. Treiber R580 in der VM.
|
|
# Version und Commit sind fest; ein Wechsel ist ein bewusster Schritt (Tag und Commit gemeinsam ändern).
|
|
ARG CUDA_DEVEL=nvidia/cuda:12.6.3-devel-ubuntu24.04@sha256:392c0df7b577ecae17a17f6ba7f2009c217bb4422f8431c053ae9af61a8c148a
|
|
ARG CUDA_RUNTIME=nvidia/cuda:12.6.3-runtime-ubuntu24.04@sha256:92906d87596d638d35015c6353053121bd299d25943b875763321653884ba924
|
|
|
|
FROM ${CUDA_DEVEL} AS build
|
|
ARG WHISPER_TAG=v1.9.4
|
|
ARG WHISPER_COMMIT=927cfce34f31707e17f2bff35c349632fb9e2c3a
|
|
ARG CUDA_ARCHS="52;61"
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends git cmake build-essential ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
WORKDIR /src
|
|
RUN git clone --depth 1 --branch "${WHISPER_TAG}" https://github.com/ggml-org/whisper.cpp.git . \
|
|
&& test "$(git rev-parse HEAD)" = "${WHISPER_COMMIT}"
|
|
# Statisch gegen ggml/whisper linken: eine einzelne Binary, keine .so-Kopien in der Laufzeit-Stufe.
|
|
# libcuda kommt zur Laufzeit vom Treiber; beim Bauen reicht der Stub.
|
|
RUN cmake -B build \
|
|
-DGGML_CUDA=ON \
|
|
-DCMAKE_CUDA_ARCHITECTURES="${CUDA_ARCHS}" \
|
|
-DBUILD_SHARED_LIBS=OFF \
|
|
-DWHISPER_BUILD_TESTS=OFF \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_EXE_LINKER_FLAGS="-L/usr/local/cuda/lib64/stubs" \
|
|
&& cmake --build build --target whisper-server -j"$(nproc)" \
|
|
&& strip build/bin/whisper-server
|
|
|
|
FROM ${CUDA_RUNTIME}
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ffmpeg curl ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
COPY --from=build /src/build/bin/whisper-server /usr/local/bin/whisper-server
|
|
# ffmpeg-Hülle: whisper-server ruft "ffmpeg … 2>&1" auf und schriebe sonst Banner und
|
|
# Container-Metadaten des Uploads ins Log. Die Hülle liegt vor /usr/bin im PATH.
|
|
COPY --chmod=0755 ffmpeg-quiet.sh /usr/local/bin/ffmpeg
|
|
COPY --chmod=0755 entrypoint.sh /usr/local/bin/entrypoint.sh
|
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|