FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04

ENV PYTHONUNBUFFERED=1 \
    PIP_NO_CACHE_DIR=1 \
    PIP_DEFAULT_TIMEOUT=600 \
    DEBIAN_FRONTEND=noninteractive

WORKDIR /app

# Install Python and system dependencies
# python3-pip installs pip
# python3-dev and build-essential for compiling extensions
# libgl* and others for OpenCV
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 \
    python3-pip \
    python3-dev \
    build-essential \
    libgl1-mesa-glx \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender1 \
    ffmpeg \
    libjpeg-dev \
    libpng-dev \
    && rm -rf /var/lib/apt/lists/*

# Ensure python points to python3
RUN ln -s /usr/bin/python3 /usr/bin/python

COPY ./app /app/app
COPY ./*.pt /app/

# Обновляем pip и инструменты сборки
RUN pip install --no-cache-dir --upgrade pip setuptools wheel

# Устанавливаем PyTorch (по умолчанию CUDA версия, если доступна)
RUN pip install --no-cache-dir torch torchvision

# Устанавливаем тяжелые зависимости отдельно для кэширования и предотвращения таймаутов
# Увеличиваем таймаут до 1000 секунд
RUN pip install --no-cache-dir --prefer-binary --timeout 1000 "ultralytics>=8.0.0"
RUN pip install --no-cache-dir --prefer-binary --timeout 1000 "onnxruntime>=1.16.0"
RUN pip install --no-cache-dir --prefer-binary --timeout 1000 "insightface>=0.7.3"

# Устанавливаем остальные зависимости
RUN pip install --no-cache-dir --prefer-binary --timeout 1000 -r /app/app/requirements.txt

EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
