forked from frlp-utn-ingsoft/eventhub
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
53 lines (41 loc) · 1.6 KB
/
Copy pathDockerfile
File metadata and controls
53 lines (41 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Usar una imagen base oficial de Python con la versión más reciente y estable
# Se usa la variante slim para reducir el tamaño de la imagen
FROM python:3.12-slim
# Establecer variables de entorno
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
# pip
PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \
PIP_DEFAULT_TIMEOUT=100
# Establecer el directorio de trabajo
WORKDIR /app
# Instalar dependencias del sistema necesarias
# Se combinan los comandos para reducir capas y se limpia la caché de apt
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# Copiar requirements.txt primero para aprovechar la caché de capas de Docker
COPY requirements.txt .
# Instalar dependencias de Python
# Se usa --no-cache-dir para reducir el tamaño de la imagen
RUN pip install --no-cache-dir -r requirements.txt
# Crear directorios necesarios
RUN mkdir -p /app/staticfiles /app/media
# Copiar el código de la aplicación
COPY . .
# Script de entrada para iniciar la aplicación
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
# Crear un usuario no root para ejecutar la aplicación y asignar permisos
RUN adduser --disabled-password --gecos '' django_user && \
chown -R django_user:django_user /app && \
chmod -R 755 /app/staticfiles /app/media
# Cambiar al usuario no root
USER django_user
# Exponer el puerto que usará Django
EXPOSE 8000
# Comando para ejecutar la aplicación
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]