Dockerfile fixed
Browse files- Dockerfile +8 -47
Dockerfile
CHANGED
@@ -1,8 +1,4 @@
|
|
1 |
-
|
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
|
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
|
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"]
|