|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
|
|
|
RED='\033[0;31m' |
|
|
GREEN='\033[0;32m' |
|
|
YELLOW='\033[1;33m' |
|
|
BLUE='\033[0;34m' |
|
|
NC='\033[0m' |
|
|
|
|
|
echo -e "${BLUE}🔥 FireWatch AI - Démarrage du conteneur${NC}" |
|
|
echo -e "${BLUE}Créé par Marino ATOHOUN${NC}" |
|
|
|
|
|
|
|
|
log() { |
|
|
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}" |
|
|
} |
|
|
|
|
|
error() { |
|
|
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1${NC}" |
|
|
} |
|
|
|
|
|
warning() { |
|
|
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] WARNING: $1${NC}" |
|
|
} |
|
|
|
|
|
|
|
|
if [ "$DATABASE_URL" ]; then |
|
|
log "Attente de la base de données..." |
|
|
|
|
|
|
|
|
if [[ $DATABASE_URL == postgresql* ]]; then |
|
|
DB_HOST=$(echo $DATABASE_URL | sed -n 's/.*@\([^:]*\):.*/\1/p') |
|
|
DB_PORT=$(echo $DATABASE_URL | sed -n 's/.*:\([0-9]*\)\/.*/\1/p') |
|
|
|
|
|
if [ "$DB_HOST" ] && [ "$DB_PORT" ]; then |
|
|
log "Vérification de la connexion à PostgreSQL ($DB_HOST:$DB_PORT)..." |
|
|
|
|
|
|
|
|
until nc -z $DB_HOST $DB_PORT; do |
|
|
warning "PostgreSQL n'est pas encore prêt - attente..." |
|
|
sleep 2 |
|
|
done |
|
|
|
|
|
log "PostgreSQL est prêt!" |
|
|
fi |
|
|
fi |
|
|
fi |
|
|
|
|
|
|
|
|
log "Exécution des migrations de base de données..." |
|
|
python manage.py migrate --noinput |
|
|
|
|
|
|
|
|
if [ "$DJANGO_SUPERUSER_USERNAME" ] && [ "$DJANGO_SUPERUSER_EMAIL" ] && [ "$DJANGO_SUPERUSER_PASSWORD" ]; then |
|
|
log "Création du superutilisateur..." |
|
|
python manage.py shell << EOF |
|
|
from django.contrib.auth import get_user_model |
|
|
User = get_user_model() |
|
|
if not User.objects.filter(username='$DJANGO_SUPERUSER_USERNAME').exists(): |
|
|
User.objects.create_superuser('$DJANGO_SUPERUSER_USERNAME', '$DJANGO_SUPERUSER_EMAIL', '$DJANGO_SUPERUSER_PASSWORD') |
|
|
print('Superutilisateur créé avec succès') |
|
|
else: |
|
|
print('Superutilisateur existe déjà') |
|
|
EOF |
|
|
fi |
|
|
|
|
|
|
|
|
log "Collecte des fichiers statiques..." |
|
|
python manage.py collectstatic --noinput |
|
|
|
|
|
|
|
|
log "Vérification des modèles YOLOv8..." |
|
|
if [ -f "models/incendies.pt" ]; then |
|
|
log "✓ Modèle d'incendie trouvé" |
|
|
else |
|
|
warning "✗ Modèle d'incendie non trouvé (models/incendies.pt)" |
|
|
fi |
|
|
|
|
|
if [ -f "models/intrusion.pt" ]; then |
|
|
log "✓ Modèle d'intrusion trouvé" |
|
|
else |
|
|
warning "✗ Modèle d'intrusion non trouvé (models/intrusion.pt)" |
|
|
fi |
|
|
|
|
|
|
|
|
log "Création des répertoires nécessaires..." |
|
|
mkdir -p media/uploads/images media/uploads/videos media/results logs |
|
|
|
|
|
|
|
|
log "Vérification des permissions..." |
|
|
if [ ! -w "media" ]; then |
|
|
error "Pas de permission d'écriture sur le répertoire media" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
log "Configuration:" |
|
|
echo " - DEBUG: ${DEBUG:-False}" |
|
|
echo " - ALLOWED_HOSTS: ${ALLOWED_HOSTS:-localhost}" |
|
|
echo " - DATABASE_URL: ${DATABASE_URL:-sqlite:///db.sqlite3}" |
|
|
|
|
|
|
|
|
if [ "$CELERY_BROKER_URL" ]; then |
|
|
log "Démarrage de Celery worker..." |
|
|
celery -A firewatch_project worker --loglevel=info --detach |
|
|
fi |
|
|
|
|
|
log "🚀 Démarrage de l'application FireWatch AI..." |
|
|
|
|
|
|
|
|
exec "$@" |
|
|
|
|
|
|