Jaocs commited on
Commit
cf37fd5
1 Parent(s): e15125e

Dockerfile fixed

Browse files
Files changed (1) hide show
  1. Dockerfile +8 -47
Dockerfile CHANGED
@@ -1,8 +1,4 @@
1
- # --- ETAPA 1: CONSTRUCTOR (BUILDER) ---
2
- FROM nvidia/cuda:12.1.1-devel-ubuntu22.04 AS builder
3
-
4
- # Establece un directorio de trabajo inicial para operaciones de root (ej. apt-get).
5
- WORKDIR /root_build_temp
6
 
7
  # Configura las variables de entorno para CUDA (a nivel de sistema).
8
  ENV CUDA_HOME=/usr/local/cuda-12.1
@@ -13,18 +9,20 @@ ENV PATH=$CUDA_HOME/bin:$PATH
13
  ENV TORCH_CUDA_ARCH_LIST="7.0 7.5 8.0 8.6 8.9 9.0+PTX"
14
 
15
  # Instala las dependencias del sistema operativo necesarias como root.
 
16
  RUN apt-get update && \
17
  DEBIAN_FRONTEND=noninteractive apt-get install -y \
18
- build-essential wget curl nano ninja-build unzip ffmpeg libgl-dev \
19
  libgl1-mesa-glx libsm6 libxext6 && \
20
  apt-get clean && \
21
  rm -rf /var/lib/apt/lists/*
22
 
23
- # --- Configuraci贸n de usuario no-root para seguridad y permisos en BUILDER ---
24
  # Crea un nuevo usuario llamado "user" con UID 1000 y su directorio home.
25
  RUN useradd -m -u 1000 user
26
 
27
  # Instala Miniconda en el directorio home del nuevo usuario.
 
28
  ENV CONDA_DIR=/home/user/miniconda
29
  RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /home/user/miniconda.sh && \
30
  chown user:user /home/user/miniconda.sh && \
@@ -35,8 +33,10 @@ RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86
35
  # Cambia al usuario no-root "user". Todas las instrucciones posteriores se ejecutar谩n como este usuario.
36
  USER user
37
  # Establece el directorio HOME y actualiza el PATH para el nuevo usuario.
 
38
  ENV HOME=/home/user \
39
  PATH=$CONDA_DIR/bin:$PATH \
 
40
  PYTHONUNBUFFERED=1 \
41
  GRADIO_ALLOW_FLAGGING=never \
42
  GRADIO_NUM_PORTS=1 \
@@ -44,7 +44,7 @@ ENV HOME=/home/user \
44
  GRADIO_THEME=huggingface \
45
  SYSTEM=spaces
46
 
47
- # Establece el directorio de trabajo para la aplicaci贸n bajo el usuario.
48
  WORKDIR $HOME/app
49
 
50
  # Copia todo el c贸digo fuente de tu proyecto al directorio de trabajo del usuario,
@@ -83,46 +83,7 @@ RUN pip install -e submodules/RoMa
83
  RUN pip install plotly scikit-learn moviepy==2.1.1 ffmpeg && \
84
  pip install fastapi[standard]
85
 
86
- # --- ETAPA 2: FINAL (RUNTIME) ---
87
- # Esta etapa crea la imagen final de producci贸n, que es m谩s ligera.
88
- FROM nvidia/cuda:12.1.1-runtime-ubuntu22.04 AS final
89
-
90
- # 隆CORREGIDO! Crea el usuario 'user' con UID 1000 en la etapa final tambi茅n.
91
- # Esto asegura que el usuario exista antes de cambiar a 茅l o copiar archivos con su propiedad.
92
- RUN useradd -m -u 1000 user
93
-
94
- # Cambia al usuario no-root "user" para la ejecuci贸n.
95
- USER user
96
- # Establece el directorio HOME y el directorio de trabajo para el usuario.
97
- ENV HOME=/home/user
98
- WORKDIR $HOME/app
99
-
100
  # Documenta el puerto que la aplicaci贸n expone.
101
  EXPOSE 7860
102
 
103
- # Instala las librer铆as de tiempo de ejecuci贸n de OpenGL/X11 y ffmpeg.
104
- # Se ejecuta como usuario root temporalmente para apt-get, luego se vuelve al usuario 'user'.
105
- USER root
106
- RUN apt-get update && \
107
- DEBIAN_FRONTEND=noninteractive apt-get install -y \
108
- libgl1-mesa-glx libsm6 libxext6 ffmpeg && \
109
- apt-get clean && \
110
- rm -rf /var/lib/apt/lists/*
111
- USER user
112
-
113
- # Copia el entorno Conda completo (con todas las librer铆as instaladas y compiladas)
114
- # desde la etapa 'builder' al directorio home del usuario en la etapa 'final'.
115
- COPY --from=builder --chown=user /home/user/miniconda /home/user/miniconda
116
-
117
- # Copia el c贸digo fuente de tu aplicaci贸n desde la etapa 'builder'.
118
- COPY --from=builder --chown=user /home/user/app /home/user/app
119
-
120
- # Configura el PATH para incluir el directorio bin de Conda y el entorno 'edgs' para el usuario.
121
- ENV PATH="/home/user/miniconda/bin:/home/user/miniconda/envs/edgs/bin:$PATH"
122
-
123
- # Aseg煤rate de que CUDA_HOME y LD_LIBRARY_PATH est茅n correctamente configurados.
124
- ENV CUDA_HOME=/usr/local/cuda-12.1
125
- ENV LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
126
-
127
- # Define el comando por defecto que se ejecutar谩 cuando el contenedor se inicie.
128
  CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
+ FROM nvidia/cuda:12.1.1-devel-ubuntu22.04
 
 
 
 
2
 
3
  # Configura las variables de entorno para CUDA (a nivel de sistema).
4
  ENV CUDA_HOME=/usr/local/cuda-12.1
 
9
  ENV TORCH_CUDA_ARCH_LIST="7.0 7.5 8.0 8.6 8.9 9.0+PTX"
10
 
11
  # Instala las dependencias del sistema operativo necesarias como root.
12
+ # Estas instalaciones no dependen del WORKDIR.
13
  RUN apt-get update && \
14
  DEBIAN_FRONTEND=noninteractive apt-get install -y \
15
+ build-essential wget curl nano ninja-build unzip libgl-dev ffmpeg \
16
  libgl1-mesa-glx libsm6 libxext6 && \
17
  apt-get clean && \
18
  rm -rf /var/lib/apt/lists/*
19
 
20
+ # --- Configuraci贸n de usuario no-root para seguridad y permisos ---
21
  # Crea un nuevo usuario llamado "user" con UID 1000 y su directorio home.
22
  RUN useradd -m -u 1000 user
23
 
24
  # Instala Miniconda en el directorio home del nuevo usuario.
25
+ # Aseguramos que el script de instalaci贸n y el directorio de conda sean propiedad del usuario.
26
  ENV CONDA_DIR=/home/user/miniconda
27
  RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /home/user/miniconda.sh && \
28
  chown user:user /home/user/miniconda.sh && \
 
33
  # Cambia al usuario no-root "user". Todas las instrucciones posteriores se ejecutar谩n como este usuario.
34
  USER user
35
  # Establece el directorio HOME y actualiza el PATH para el nuevo usuario.
36
+ # Incluye variables de entorno espec铆ficas para Hugging Face Spaces y Gradio.
37
  ENV HOME=/home/user \
38
  PATH=$CONDA_DIR/bin:$PATH \
39
+ PYTHONPATH=/home/user/app \
40
  PYTHONUNBUFFERED=1 \
41
  GRADIO_ALLOW_FLAGGING=never \
42
  GRADIO_NUM_PORTS=1 \
 
44
  GRADIO_THEME=huggingface \
45
  SYSTEM=spaces
46
 
47
+ # Establece el directorio de trabajo final para la aplicaci贸n bajo el usuario.
48
  WORKDIR $HOME/app
49
 
50
  # Copia todo el c贸digo fuente de tu proyecto al directorio de trabajo del usuario,
 
83
  RUN pip install plotly scikit-learn moviepy==2.1.1 ffmpeg && \
84
  pip install fastapi[standard]
85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  # Documenta el puerto que la aplicaci贸n expone.
87
  EXPOSE 7860
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]