BookGenreApp / Dockerfile
Adawqrcvb's picture
Upload 25 files
ae44122 verified
Raw
History Blame Contribute Delete
2.72 kB
# Базовый образ с Python 3.10 выбран для совместимости с современными версиями
# библиотек машинного обучения и с окружением Hugging Face Spaces.
FROM python:3.10-slim
# Переменные отключают TensorFlow внутри transformers.
# Приложение использует PyTorch, а TensorFlow для модели классификации не требуется.
ENV USE_TF=0 \
USE_TORCH=1 \
TRANSFORMERS_NO_TF=1 \
TOKENIZERS_PARALLELISM=false \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
HF_HOME=/home/user/.cache/huggingface \
TRANSFORMERS_CACHE=/home/user/.cache/huggingface/transformers \
SENTENCE_TRANSFORMERS_HOME=/home/user/.cache/torch/sentence_transformers \
PORT=7860
# Рабочая папка приложения внутри контейнера.
WORKDIR /app
# Устанавливаем системные библиотеки, необходимые для scikit-learn, scipy и PyTorch.
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgomp1 \
&& rm -rf /var/lib/apt/lists/*
# Сначала копируем файл зависимостей, чтобы Docker мог переиспользовать слой установки
# при изменении только кода приложения.
COPY requirements.txt .
# Устанавливаем CPU-версию PyTorch отдельно, чтобы контейнер не загружал лишние
# графические зависимости. Затем устанавливаем остальные библиотеки приложения.
RUN pip install --upgrade pip \
&& pip install torch==2.3.1 --index-url https://download.pytorch.org/whl/cpu \
&& pip install -r requirements.txt
# Копируем код приложения, шаблоны, стили и папки для модели и результатов.
COPY . .
# Создаем непривилегированного пользователя. Такой запуск безопаснее, чем работа от root.
RUN useradd -m -u 1000 user \
&& chown -R user:user /app /home/user
USER user
# Hugging Face Docker Spaces по умолчанию направляет внешний трафик на порт 7860.
EXPOSE 7860
# Gunicorn запускает Flask-приложение как сервер для размещения.
# Один рабочий процесс выбран из-за модели смысловых векторов, которая занимает память.
CMD ["gunicorn", "-c", "gunicorn_conf.py", "app:app"]