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 # Usar imagen base UBI9 de Python de Red Hat
FROM registry.access.redhat.com/ubi9/python-39:latest 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 USER 0
# Establecer directorio de trabajo
WORKDIR /app WORKDIR /app
# Instalar dependencias del sistema necesarias para PyTorch y Whisper # Instalar dnf-plugins-core (que provee dnf config-manager)
RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ # Luego instalar EPEL para RHEL 9.
dnf install -y dnf-plugins-core && \ # Luego habilitar el repositorio CodeReady Builder específico de UBI9.
dnf config-manager --set-enabled crb && \ # 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 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 . 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 # Instalar dependencias de Python
RUN echo '\ # Aumentar el timeout por si alguna descarga de pip es lenta
import whisper\n\ RUN pip install --default-timeout=300 --no-cache-dir -r requirements.txt
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
# Copiar código de la aplicación # Copiar código de la aplicación
COPY app.py . COPY app.py .
# Crear directorio compartido y configurar permisos adecuados para OpenShift # Crear directorios si van a ser usados internamente ANTES de montar volúmenes,
RUN mkdir -p /app/shared && \ # y establecer permisos para OpenShift (GID 0).
chmod -R 775 /app && \ # 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 && \ 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) # Volver al usuario predeterminado de la imagen UBI (no-root, UID 1001 para esta imagen)
USER default USER 1001
# Comando para iniciar la aplicación # Comando para iniciar la aplicación
CMD ["python", "app.py"] CMD ["python", "app.py"]