Actualizar processor/Dockerfile

This commit is contained in:
okd
2025-06-05 11:24:56 +00:00
parent d09ac6c27a
commit 1877c38085

View File

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