2026-03-16 19:24:06 +01:00
|
|
|
FROM python:3.12-slim
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
|
|
gcc \
|
2026-08-31 22:29:13 +02:00
|
|
|
curl \
|
2026-03-16 19:24:06 +01:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
|
|
|
|
COPY requirements.txt .
|
2026-08-28 08:34:27 +00:00
|
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
2026-03-16 19:24:06 +01:00
|
|
|
|
2026-08-31 22:29:13 +02:00
|
|
|
# Piper voice for the reader's read-aloud feature (see tts/piper_engine.py).
|
|
|
|
|
# Fetched at build time rather than kept in git or bind-mounted — there's no
|
|
|
|
|
# existing volume-mount pattern for extra binary assets in this repo, and
|
|
|
|
|
# baking it into the image keeps the watchtower "just pull the new image"
|
|
|
|
|
# deploy flow working unchanged.
|
|
|
|
|
RUN mkdir -p /app/tts_models && \
|
|
|
|
|
curl -fsSL -o /app/tts_models/de_DE-thorsten-medium.onnx \
|
|
|
|
|
https://huggingface.co/rhasspy/piper-voices/resolve/main/de/de_DE/thorsten/medium/de_DE-thorsten-medium.onnx && \
|
|
|
|
|
curl -fsSL -o /app/tts_models/de_DE-thorsten-medium.onnx.json \
|
|
|
|
|
https://huggingface.co/rhasspy/piper-voices/resolve/main/de/de_DE/thorsten/medium/de_DE-thorsten-medium.onnx.json
|
|
|
|
|
|
2026-03-19 21:35:41 +01:00
|
|
|
ARG BUILD_TIME
|
|
|
|
|
ENV BUILD_TIME=${BUILD_TIME}
|
|
|
|
|
|
2026-03-16 19:24:06 +01:00
|
|
|
COPY . .
|
|
|
|
|
|
2026-03-16 20:24:20 +01:00
|
|
|
RUN python manage.py collectstatic --noinput && mkdir -p /app/data
|
2026-03-16 19:24:06 +01:00
|
|
|
|
|
|
|
|
EXPOSE 8000
|
|
|
|
|
|
2026-03-19 19:15:01 +01:00
|
|
|
CMD ["sh", "-c", "python manage.py migrate --noinput && gunicorn diora.wsgi:application --bind 0.0.0.0:8000 --workers 4 --worker-class gevent --timeout 120"]
|