# syntax=docker/dockerfile:1 # DUB-AI: HTTP-сервис определения дорожек озвучки (FastAPI), CPU. # # python tools/pack_models.py --stage docker-models # положить модели в образ (необязательно) # docker build -t dub-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"]