# 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"]