joseluisthepower commited on
Commit
b104291
verified
1 Parent(s): dde337b

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +23 -11
Dockerfile CHANGED
@@ -1,10 +1,10 @@
1
  # 1. Usar una imagen base oficial de Python
2
  FROM python:3.10-slim
3
 
4
- # 2. Establecer el directorio de trabajo dentro del contenedor
5
  WORKDIR /app
6
 
7
- # 3. Instalar las dependencias del sistema (como ffmpeg)
8
  RUN apt-get update && apt-get install -y --no-install-recommends \
9
  ffmpeg \
10
  git \
@@ -12,21 +12,33 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
12
  && apt-get clean \
13
  && rm -rf /var/lib/apt/lists/*
14
 
15
- # 4. Crear un directorio de cache local y establecer variables de entorno
16
- # para que las librer铆as lo usen. Esto soluciona el PermissionError.
 
 
 
17
  RUN mkdir -p /app/.cache
 
 
 
 
 
 
18
  ENV HF_HOME="/app/.cache"
19
  ENV MPLCONFIGDIR="/app/.cache"
20
 
21
- # 5. Copiar el archivo de requerimientos y instalar las librer铆as de Python
22
- COPY requirements.txt .
23
- RUN pip install --no-cache-dir -r requirements.txt
 
 
 
24
 
25
- # 6. Copiar el resto del c贸digo de la aplicaci贸n
26
- COPY . .
27
 
28
- # 7. Exponer el puerto que Gradio usar谩
29
  EXPOSE 7860
30
 
31
- # 8. El comando para ejecutar la aplicaci贸n cuando el contenedor se inicie
32
  CMD ["python", "app.py"]
 
1
  # 1. Usar una imagen base oficial de Python
2
  FROM python:3.10-slim
3
 
4
+ # 2. Establecer el directorio de trabajo
5
  WORKDIR /app
6
 
7
+ # 3. Instalar dependencias del sistema (como root)
8
  RUN apt-get update && apt-get install -y --no-install-recommends \
9
  ffmpeg \
10
  git \
 
12
  && apt-get clean \
13
  && rm -rf /var/lib/apt/lists/*
14
 
15
+ # 4. Crear un usuario sin privilegios para ejecutar la aplicaci贸n
16
+ # Esto es una pr谩ctica de seguridad est谩ndar y soluciona los problemas de permisos.
17
+ RUN useradd -m -u 1000 user
18
+
19
+ # 5. Crear el directorio de cache.
20
  RUN mkdir -p /app/.cache
21
+
22
+ # 6. Cambiar la propiedad de TODO el directorio de la aplicaci贸n a nuestro nuevo usuario.
23
+ # Este es el paso CLAVE que soluciona el PermissionError.
24
+ RUN chown -R user:user /app
25
+
26
+ # 7. Establecer las variables de entorno para que las librer铆as usen el cache local.
27
  ENV HF_HOME="/app/.cache"
28
  ENV MPLCONFIGDIR="/app/.cache"
29
 
30
+ # 8. Cambiar al usuario sin privilegios. Todos los comandos a partir de aqu铆 se ejecutar谩n como 'user'.
31
+ USER user
32
+
33
+ # 9. Copiar los archivos de la aplicaci贸n, asegurando que el propietario sea 'user'.
34
+ COPY --chown=user:user requirements.txt .
35
+ COPY --chown=user:user app.py .
36
 
37
+ # 10. Instalar las dependencias de Python (ahora como 'user')
38
+ RUN pip install --no-cache-dir -r requirements.txt
39
 
40
+ # 11. Exponer el puerto
41
  EXPOSE 7860
42
 
43
+ # 12. Ejecutar la aplicaci贸n (como 'user')
44
  CMD ["python", "app.py"]