# Dockerfile for backend with fansifter-clipper support
# Build context: project root
FROM python:3.12-slim

# Install system dependencies for video processing
RUN apt-get update && apt-get install -y \
    ffmpeg \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender-dev \
    curl \
    build-essential \
    g++ \
    && rm -rf /var/lib/apt/lists/*

ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1

# Install uv
RUN pip install --no-cache-dir uv

WORKDIR /app

# Copy fansifter-clipper package files
COPY src src
COPY pyproject.toml ./

# Copy workspace files
COPY demo-app/pyproject.toml ./demo-app-pyproject.toml
COPY demo-app/uv.lock ./uv.lock

# Copy backend
COPY demo-app/backend backend

# Create venv and install fansifter-clipper from project root
RUN uv venv && \
    . .venv/bin/activate && \
    pip install -e .

# Modify backend pyproject.toml to use relative path for fansifter-clipper
# Then install backend dependencies
RUN . .venv/bin/activate && \
    cd backend && \
    sed 's|file:///Users/durukov/Work/TheOrchard/DataScience/fansifter-video-clipper|file:///app|g' pyproject.toml > pyproject.toml.docker && \
    mv pyproject.toml.docker pyproject.toml && \
    pip install -e .

ENV PATH="/app/.venv/bin:$PATH"

# Create media directory
RUN mkdir -p /app/media && chmod 777 /app/media

WORKDIR /app/backend

CMD ["fastapi", "run", "--workers", "4", "app/main.py"]
