Files
grabber-ai/Dockerfile
T

40 lines
1.4 KiB
Docker

# syntax=docker/dockerfile:1
# grabber-ai: HTTP-сервис определения дорожек озвучки (FastAPI), CPU.
#
# python tools/pack_models.py --stage docker-models # положить модели в образ (необязательно)
# docker build -t grabber-ai .
#
# Без шага pack_models образ собирается без моделей — тогда смонтируйте каталог: -v ./models:/app/models:ro
FROM python:3.12-slim
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1 \
HF_HUB_OFFLINE=1 \
TRANSFORMERS_OFFLINE=1 \
TOKENIZERS_PARALLELISM=false \
DUB_HOST=0.0.0.0 \
DUB_PORT=8000 \
DUB_MODEL_DIR=/app/models/best \
DUB_SEGMENTER_DIR=/app/models/segmenter
WORKDIR /app
# torch без CUDA: образ в разы легче, на VPS GPU нет
RUN pip install torch==2.11.0 --index-url https://download.pytorch.org/whl/cpu
COPY requirements-service.txt .
RUN pip install -r requirements-service.txt
COPY src/ src/
COPY docker-models/models/ models/
RUN useradd --system --uid 10001 --no-create-home dub
USER dub
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=5s --start-period=120s --retries=3 \
CMD python -c "import os,urllib.request as u; u.urlopen('http://127.0.0.1:%s/health' % os.environ.get('DUB_PORT','8000'), timeout=4)"
CMD ["python", "-m", "src.service"]