rinogeek commited on
Commit
6241edf
·
1 Parent(s): 1624b73

Improve Docker configuration with Gunicorn and collectstatic

Browse files
DEPLOYMENT_HF.md CHANGED
@@ -8,19 +8,19 @@ Cette documentation explique les modifications apportées au dossier `backend` p
8
  Le fichier `Dockerfile` est le cœur de la configuration Docker. Il effectue les actions suivantes :
9
  - Utilise une image de base Python 3.10.
10
  - Installe les dépendances système nécessaires à OpenCV (`libgl1-mesa-glx`, `libglib2.0-0`).
11
- - Installe les dépendances Python listées dans `requirements.txt`.
12
  - Configure le port par défaut sur `7860` (obligatoire pour Hugging Face Spaces).
13
- - Exécute les migrations de base de données au démarrage.
 
14
 
15
- ### `README_HF.md`
16
  Ce fichier contient les métadonnées YAML nécessaires à Hugging Face pour identifier le SDK (Docker) et le port de l'application.
17
- **Note :** Pour que Hugging Face reconnaisse ces métadonnées, ce contenu doit être présent dans le fichier `README.md` à la racine du dépôt sur Hugging Face.
18
 
19
  ## 2. Modifications de Configuration
20
 
21
  ### Port de l'Application
22
- Hugging Face Spaces expose l'application sur le port **7860**. Le `Dockerfile` est configuré pour lancer le serveur Django sur ce port spécifique :
23
- `python manage.py runserver 0.0.0.0:7860`
24
 
25
  ### Gestion des Fichiers Statiques et Media
26
  Dans un environnement Docker éphémère comme Hugging Face Spaces :
 
8
  Le fichier `Dockerfile` est le cœur de la configuration Docker. Il effectue les actions suivantes :
9
  - Utilise une image de base Python 3.10.
10
  - Installe les dépendances système nécessaires à OpenCV (`libgl1-mesa-glx`, `libglib2.0-0`).
11
+ - Installe les dépendances Python listées dans `requirements.txt` (incluant `gunicorn`).
12
  - Configure le port par défaut sur `7860` (obligatoire pour Hugging Face Spaces).
13
+ - Exécute les migrations de base de données et `collectstatic` au démarrage du build.
14
+ - Utilise `gunicorn` pour servir l'application de manière robuste.
15
 
16
+ ### `README.md`
17
  Ce fichier contient les métadonnées YAML nécessaires à Hugging Face pour identifier le SDK (Docker) et le port de l'application.
 
18
 
19
  ## 2. Modifications de Configuration
20
 
21
  ### Port de l'Application
22
+ Hugging Face Spaces expose l'application sur le port **7860**. Le `Dockerfile` est configuré pour lancer Gunicorn sur ce port spécifique :
23
+ `gunicorn --bind 0.0.0.0:7860 satcap_project.wsgi:application`
24
 
25
  ### Gestion des Fichiers Statiques et Media
26
  Dans un environnement Docker éphémère comme Hugging Face Spaces :
Dockerfile CHANGED
@@ -26,12 +26,12 @@ COPY . /app/
26
  # Create media and static directories
27
  RUN mkdir -p /app/media /app/static
28
 
29
- # Run migrations (using SQLite for simplicity in Space)
30
  RUN python manage.py migrate
 
31
 
32
  # Expose the port Gradio/Hugging Face expects
33
  EXPOSE 7860
34
 
35
- # Start the application using Gunicorn or directly with manage.py
36
- # Hugging Face Spaces for Docker expects the app to run on port 7860
37
- CMD ["python", "manage.py", "runserver", "0.0.0.0:7860"]
 
26
  # Create media and static directories
27
  RUN mkdir -p /app/media /app/static
28
 
29
+ # Run migrations and collectstatic
30
  RUN python manage.py migrate
31
+ RUN python manage.py collectstatic --noinput
32
 
33
  # Expose the port Gradio/Hugging Face expects
34
  EXPOSE 7860
35
 
36
+ # Start the application using Gunicorn
37
+ CMD ["gunicorn", "--bind", "0.0.0.0:7860", "satcap_project.wsgi:application"]
 
requirements.txt CHANGED
@@ -55,3 +55,4 @@ typing_extensions==4.15.0
55
  ultralytics==8.3.246
56
  ultralytics-thop==2.0.18
57
  urllib3==2.6.2
 
 
55
  ultralytics==8.3.246
56
  ultralytics-thop==2.0.18
57
  urllib3==2.6.2
58
+ gunicorn==23.0.0
satcap_project/settings.py CHANGED
@@ -83,6 +83,7 @@ USE_I18N = True
83
  USE_TZ = True
84
 
85
  STATIC_URL = 'static/'
 
86
 
87
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
88
 
 
83
  USE_TZ = True
84
 
85
  STATIC_URL = 'static/'
86
+ STATIC_ROOT = os.path.join(BASE_DIR, 'static')
87
 
88
  DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
89