FireWatch / Dockerfile
rinogeek's picture
Add application file
fc3299e
# Dockerfile pour FireWatch AI sur Hugging Face Spaces
# Modifié par BlackBenAI Team
FROM python:3.11-slim
# Métadonnées
LABEL maintainer="BlackBenAI Team"
LABEL description="FireWatch AI - Système de détection d'incendie et d'intrusion"
LABEL version="1.1"
# Variables d'environnement
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV DEBIAN_FRONTEND=noninteractive
ENV PORT=7860
# Répertoire de travail
WORKDIR /app
# Installation des dépendances système
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
libgl1 \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
libgomp1 \
libgthread-2.0-0 \
libgtk-3-0 \
python3-opencv \
ffmpeg \
wget \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copier les requirements et installer les dépendances Python
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
# Créer un utilisateur non-root (user 1000 pour HF Spaces)
RUN useradd -m -u 1000 appuser
# Créer les répertoires nécessaires et donner les permissions
RUN mkdir -p media/uploads/images media/uploads/videos media/results models logs staticfiles
RUN chown -R appuser:appuser /app
# Passer à l'utilisateur non-root
USER appuser
# Copier le code de l'application avec les bonnes permissions
COPY --chown=appuser:appuser . .
# Collecter les fichiers statiques (en tant qu'utilisateur appuser)
RUN python manage.py collectstatic --noinput
# Exposer le port 7860 (Hugging Face Spaces)
EXPOSE 7860
# Commande de santé
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost:7860/ || exit 1
# Script de démarrage
RUN chmod +x /app/docker-entrypoint.sh
# Commande par défaut
ENTRYPOINT ["/app/docker-entrypoint.sh"]
CMD ["gunicorn", "--bind", "0.0.0.0:7860", "--workers", "2", "--timeout", "120", "firewatch_project.wsgi:application"]