44 lines
1.3 KiB
Docker
44 lines
1.3 KiB
Docker
# syntax=docker/dockerfile:1
|
||
|
||
FROM python:3.11-slim-bookworm
|
||
|
||
# Установка системных зависимостей
|
||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||
ffmpeg \
|
||
build-essential \
|
||
libsndfile1 \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# Рабочая директория
|
||
WORKDIR /app
|
||
|
||
# Копируем зависимости
|
||
COPY requirements.txt .
|
||
RUN pip install --no-cache-dir -r requirements.txt
|
||
|
||
# Копируем код проекта
|
||
COPY . .
|
||
|
||
# Предзагрузка моделей (HF_TOKEN передаётся через build args)
|
||
ARG HF_TOKEN
|
||
ENV HF_TOKEN=$HF_TOKEN
|
||
RUN if [ -n "$HF_TOKEN" ]; then \
|
||
echo "[Build] Загрузка моделей с HF_TOKEN..."; \
|
||
python scripts/download_models.py; \
|
||
else \
|
||
echo "[Build] HF_TOKEN не передан — модели загрузятся при первом запуске"; \
|
||
fi
|
||
|
||
# Создаём директории для данных
|
||
RUN mkdir -p uploads processed tmp
|
||
|
||
# Открываем порт
|
||
EXPOSE 8000
|
||
|
||
# Entrypoint скрипт
|
||
COPY scripts/docker-entrypoint.sh /docker-entrypoint.sh
|
||
RUN chmod +x /docker-entrypoint.sh
|
||
|
||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
|