Files
cbc2027/Dockerfile

61 lines
1.8 KiB
Docker
Executable File

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