hellower/diary-predictor
0
1# Используем официальный Python образ2FROM python:3.11-slim3 4# Устанавливаем рабочую директорию5WORKDIR /app6 7# Устанавливаем системные зависимости8RUN apt-get update && apt-get install -y \9 gcc \10 g++ \11 && rm -rf /var/lib/apt/lists/*12 13# Копируем файл зависимостей14COPY requirements.txt .15 16# Устанавливаем Python зависимости17RUN pip install --no-cache-dir --upgrade pip && \18 pip install --no-cache-dir -r requirements.txt19 20# Создаем непривилегированного пользователя21RUN useradd -m -u 1000 appuser22 23# Копируем код приложения24COPY . .25 26# Меняем владельца файлов27RUN chown -R appuser:appuser /app28 29# Переключаемся на непривилегированного пользователя30USER appuser31 32# Открываем порт33# Для Hugging Face Spaces используется порт 7860 (устанавливается автоматически через переменную PORT)34# Для локального запуска используется порт 500035EXPOSE 786036 37# Переменные окружения38ENV PYTHONUNBUFFERED=139ENV FLASK_APP=app.py40# Hugging Face Spaces автоматически устанавливает PORT=786041# Для локального запуска можно установить PORT=500042ENV PORT=786043 44# Health check45HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \46 CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:7860/health')" || exit 147 48# Запускаем приложение через gunicorn49# Используем переменную PORT (7860 для Spaces, можно переопределить для локального запуска)50CMD ["sh", "-c", "gunicorn --bind 0.0.0.0:${PORT:-7860} --workers 2 --threads 2 --timeout 120 --access-logfile - --error-logfile - app:app"]51 52 