FROM python:3.12-slim # Variables d'environnement ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ DJANGO_SETTINGS_MODULE=config.settings.prod WORKDIR /app # psycopg2-binary : pas besoin de gcc/libpq-dev (économise RAM/disque au build) # Dépendances Python COPY requirements.txt . RUN pip install --upgrade pip && pip install -r requirements.txt # Code source COPY . . # Collecte des fichiers statiques # DATABASE_URL factice pour éviter l'erreur de connexion à la DB au build RUN SECRET_KEY=build-only-key DATABASE_URL=sqlite:///tmp/build.db \ python manage.py collectstatic --noinput # Utilisateur non-root pour la sécurité RUN adduser --disabled-password --gecos "" appuser && chown -R appuser /app USER appuser EXPOSE 8000 CMD ["gunicorn", "config.wsgi:application", \ "--bind", "0.0.0.0:8000", \ "--workers", "3", \ "--timeout", "60", \ "--access-logfile", "-", \ "--error-logfile", "-"]