# Usar una imagen base de NVIDIA con CUDA 12.1.1 y Python 3.10
FROM nvidia/cuda:12.1.1-runtime-ubuntu22.04

# Evitar que los cuadros de diálogo de apt se bloqueen
ENV DEBIAN_FRONTEND=noninteractive

# Instalar Python, pip y dependencias del sistema
RUN apt-get update && apt-get install -y \
    python3.10 \
    python3-pip \
    ffmpeg \
    poppler-utils \
    tesseract-ocr \
    tesseract-ocr-spa \
    curl \
    libgl1 \
    libglib2.0-0 \
    && rm -rf /var/lib/apt/lists/*

# Instalar Node.js 20 usando NodeSource repository
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && \
    rm -rf /var/lib/apt/lists/*

# Crear un enlace simbólico para que python3 -> python
RUN ln -s /usr/bin/python3 /usr/bin/python

# Establecer el directorio de trabajo
WORKDIR /app

# Copiar requerimientos e instalar dependencias de Python
COPY requirements.txt .
RUN python3 -m pip install --no-cache-dir --upgrade pip && \
    python3 -m pip install --no-cache-dir \
        torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 && \
    python3 -m pip install --no-cache-dir -r requirements.txt

# Instalar Claude CLI
RUN npm install -g @anthropic-ai/claude-code

# Instalar Gemini CLI como root
RUN npm install -g @google/gemini-cli

# Crear usuario sin privilegios para ejecutar la app (evita bloqueos del CLI)
ARG APP_UID=1000
ARG APP_GID=1000
RUN groupadd --gid ${APP_GID} appgroup \
    && useradd --uid ${APP_UID} --gid ${APP_GID} --create-home appuser

# Copiar todo el código de la aplicación al contenedor
COPY . .

# Dar acceso al usuario no root
RUN chown -R appuser:appgroup /app

# Ejecutar como usuario sin privilegios (requerido por Claude CLI)
USER appuser

# Comando por defecto para iniciar el servicio principal unificado
CMD ["python3", "main.py"]
