From 1877c380852b80096e6c1f26a0b92de61c97b1d5 Mon Sep 17 00:00:00 2001 From: okd Date: Thu, 5 Jun 2025 11:24:56 +0000 Subject: [PATCH] Actualizar processor/Dockerfile --- processor/Dockerfile | 55 ++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/processor/Dockerfile b/processor/Dockerfile index b8aba45..7056257 100644 --- a/processor/Dockerfile +++ b/processor/Dockerfile @@ -1,48 +1,47 @@ # Usar imagen base UBI9 de Python de Red Hat FROM registry.access.redhat.com/ubi9/python-39:latest -# Usuario por defecto en las imágenes UBI es no-root (default) +# Usuario root para instalar paquetes USER 0 +# Establecer directorio de trabajo WORKDIR /app -# Instalar dependencias del sistema necesarias para PyTorch y Whisper -RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ - dnf install -y dnf-plugins-core && \ - dnf config-manager --set-enabled crb && \ +# Instalar dnf-plugins-core (que provee dnf config-manager) +# Luego instalar EPEL para RHEL 9. +# Luego habilitar el repositorio CodeReady Builder específico de UBI9. +# Finalmente, instalar las herramientas de compilación y ffmpeg. +RUN dnf install -y dnf-plugins-core && \ + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ + # Habilitar el repositorio CodeReady Builder para UBI 9 + # El nombre exacto puede variar ligeramente, pero este es el patrón común. + # $(arch) se expandirá a la arquitectura actual (ej. x86_64, aarch64) + dnf config-manager --set-enabled codeready-builder-for-rhel-9-$(arch)-rpms && \ dnf install -y gcc-c++ make ffmpeg && \ - dnf clean all + dnf clean all && \ + rm -rf /var/cache/dnf # Limpieza adicional del caché de dnf -# Copiar requirements.txt e instalar dependencias de Python +# Copiar archivos de la aplicación COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt -# Crear un script para descargar el modelo Whisper durante la construcción de la imagen -RUN echo '\ -import whisper\n\ -import torch\n\ -print("Verificando disponibilidad de CUDA:", torch.cuda.is_available())\n\ -if torch.cuda.is_available():\n\ - print("Dispositivo CUDA:", torch.cuda.get_device_name(0))\n\ -print("Descargando modelo Whisper base...")\n\ -whisper.load_model("base")\n\ -print("Modelo descargado correctamente")\ -' > download_model.py - -# Ejecutar el script para descargar el modelo durante la construcción -RUN python download_model.py +# Instalar dependencias de Python +# Aumentar el timeout por si alguna descarga de pip es lenta +RUN pip install --default-timeout=300 --no-cache-dir -r requirements.txt # Copiar código de la aplicación COPY app.py . -# Crear directorio compartido y configurar permisos adecuados para OpenShift -RUN mkdir -p /app/shared && \ - chmod -R 775 /app && \ +# Crear directorios si van a ser usados internamente ANTES de montar volúmenes, +# y establecer permisos para OpenShift (GID 0). +# Si estos directorios SIEMPRE van a ser montados desde PVCs, este paso puede ser opcional +# o solo crear los directorios base sin contenido. +RUN mkdir -p /app/shared /app/output && \ chgrp -R 0 /app && \ - chmod -R g=u /app + chmod -R g+rwx /app + # El UID será arbitrario, GID 0 tiene permisos por chgrp y chmod g+rwx -# Volver al usuario predeterminado de la imagen UBI (no-root) -USER default +# Volver al usuario predeterminado de la imagen UBI (no-root, UID 1001 para esta imagen) +USER 1001 # Comando para iniciar la aplicación CMD ["python", "app.py"] \ No newline at end of file