| # --- Étape 1 : Build du Frontend --- | |
| FROM node:20-slim AS frontend-builder | |
| WORKDIR /app/frontend | |
| COPY frontend/package*.json ./ | |
| RUN npm install | |
| COPY frontend/ ./ | |
| # On s'assure que l'API pointe vers le même domaine en prod | |
| ENV VITE_API_URL=/api | |
| RUN npm run build | |
| # --- Étape 2 : Image finale --- | |
| FROM python:3.12-slim | |
| # Installation des dépendances système | |
| RUN apt-get update && apt-get install -y \ | |
| nginx \ | |
| redis-server \ | |
| gcc \ | |
| libpq-dev \ | |
| curl \ | |
| supervisor \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # Installation des dépendances Python | |
| COPY backend/requirements.txt ./backend/ | |
| RUN pip install --upgrade pip && pip install -r backend/requirements.txt | |
| RUN pip install gunicorn daphne | |
| # Copie du code Backend | |
| COPY backend/ ./backend/ | |
| # Copie du build Frontend depuis l'étape 1 | |
| COPY --from=frontend-builder /app/frontend/dist ./frontend_dist | |
| # Copie des configurations | |
| COPY nginx.conf /etc/nginx/sites-available/default | |
| COPY supervisord.conf ./supervisord.conf | |
| COPY start.sh ./start.sh | |
| RUN chmod +x ./start.sh | |
| # Configuration Django pour Hugging Face | |
| ENV PYTHONUNBUFFERED=1 | |
| ENV DJANGO_SETTINGS_MODULE=educonnect.settings | |
| # On force SQLite pour Hugging Face si aucune DB n'est fournie | |
| ENV DB_HOST="" | |
| # Hugging Face écoute sur le port 7860 | |
| EXPOSE 7860 | |
| CMD ["python", "app.py"] | |