-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.vulkan
More file actions
60 lines (56 loc) · 2.35 KB
/
Copy pathDockerfile.vulkan
File metadata and controls
60 lines (56 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# syntax=docker/dockerfile:1.7
ARG WHISPER_CPP_VERSION=v1.9.1
FROM ubuntu:24.04 AS whisper-builder
ARG WHISPER_CPP_VERSION
RUN apt-get update \
&& apt-get install --yes --no-install-recommends \
build-essential ca-certificates cmake curl glslc libvulkan-dev spirv-headers \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
RUN curl --fail --location --show-error \
"https://github.com/ggml-org/whisper.cpp/archive/refs/tags/${WHISPER_CPP_VERSION}.tar.gz" \
| tar --extract --gzip --strip-components=1
RUN cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_VULKAN=ON \
-DWHISPER_BUILD_TESTS=OFF \
-DWHISPER_BUILD_EXAMPLES=ON \
&& cmake --build build --config Release --target whisper-cli --parallel
FROM ghcr.io/astral-sh/uv:0.8.0 AS uv
FROM ubuntu:24.04 AS runtime
RUN apt-get update \
&& apt-get install --yes --no-install-recommends \
ca-certificates ffmpeg libgomp1 libportaudio2 libvulkan1 mesa-vulkan-drivers \
python3.12 python3.12-venv \
&& rm -rf /var/lib/apt/lists/* \
&& ln -s /usr/bin/python3.12 /usr/local/bin/python
COPY --from=uv /uv /uvx /bin/
COPY --from=whisper-builder /src/build/bin/whisper-cli /usr/local/bin/whisper-cli
COPY --from=whisper-builder /src/build/bin/*.so* /usr/local/lib/
RUN ldconfig
WORKDIR /app
COPY pyproject.toml uv.lock README.md ./
RUN uv sync --frozen --no-dev --extra engines --no-install-project
COPY app ./app
RUN uv sync --frozen --no-dev --extra engines \
&& groupadd --gid 10001 vocaphone \
&& useradd --uid 10001 --gid vocaphone --no-create-home \
--home-dir /app --shell /usr/sbin/nologin vocaphone \
&& mkdir --parents /data \
&& chown --recursive vocaphone:vocaphone /data /app
ENV PATH="/app/.venv/bin:${PATH}" \
PYTHONUNBUFFERED=1 \
VOCAGATEWAY_BIND_HOST=0.0.0.0 \
VOCAGATEWAY_PORT=8765 \
VOCAGATEWAY_DATA_DIR=/data \
VOCAGATEWAY_MODELS_DIR=/data/models \
VOCAGATEWAY_CONFIG_FILE=/data/config/config.json \
VOCAGATEWAY_TOKEN_FILE=/run/secrets/vocagateway_token \
VOCAGATEWAY_WHISPER_BINARY=/usr/local/bin/whisper-cli \
VOCAGATEWAY_ENGINE=auto
USER vocaphone
EXPOSE 8765
VOLUME ["/data"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD ["python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8765/health/live', timeout=3)"]
ENTRYPOINT ["vocaphone-server"]