89 lines
3 KiB
Markdown
89 lines
3 KiB
Markdown
# Documentation des fichiers Docker pour lancer la webapp et l'API Streamlit
|
||
|
||
Ce dossier contient les fichiers nécessaires pour construire et lancer deux services via Docker :
|
||
- **Frontend Angular** (service `frontend`)
|
||
- **Backend Streamlit** (service `streamlit`)
|
||
|
||
Les Dockerfiles attendent une arborescence suivante relativement à ce dossier `devops/` :
|
||
- `./frontend/` contient l’application Angular et ses `package.json`
|
||
- `./streamlit/` contient l’application Streamlit, `requirements.txt` et `app.py`
|
||
|
||
## 1) docker-compose.yml
|
||
|
||
Orchestre le lancement des services :
|
||
- Service `frontend` (port hôte 4200 → conteneur 4200)
|
||
- Service `streamlit` (port hôte 8501 → conteneur 8501)
|
||
|
||
Commandes de base :
|
||
|
||
```bash
|
||
# Construire les images et démarrer en arrière-plan
|
||
docker compose up -d --build
|
||
|
||
# Voir les logs des deux services
|
||
docker compose logs -f
|
||
|
||
# Arrêter les services
|
||
docker compose down
|
||
```
|
||
|
||
## 2) frontend-dockerfile.yml (Angular)
|
||
|
||
Image basée sur `node:24` qui :
|
||
- installe les dépendances `npm` à partir de `package*.json`
|
||
- construit l’application (`npm run build -- --configuration=production`)
|
||
- sert le build avec `serve` sur le port 4200
|
||
|
||
Attendus côté projet :
|
||
- dossier `frontend/` avec `package.json`, code Angular, et un build générant `dist/`
|
||
|
||
Accès :
|
||
- Application disponible sur `http://localhost:4200`
|
||
|
||
Notes :
|
||
- Ce Dockerfile sert la version buildée (statique). Pour du hot-reload en dev, prévoir un autre service (ex. `ng serve`) ou un mapping de volumes.
|
||
|
||
## 3) streamlit-dockerfile.yml (Streamlit)
|
||
|
||
Image basée sur `python:3.11` qui :
|
||
- installe les dépendances via `requirements.txt`
|
||
- lance l’appli avec `streamlit run app.py --server.port=8501 --server.address=0.0.0.0`
|
||
|
||
Attendus côté projet :
|
||
- dossier `streamlit/` avec `requirements.txt` et `app.py`
|
||
|
||
Accès :
|
||
- Application disponible sur `http://localhost:8501`
|
||
|
||
## 4) Variables d’environnement et volumes (optionnel)
|
||
|
||
Si vous avez besoin de configurer des variables ou des volumes, ajoutez-les dans `docker-compose.yml`, par exemple :
|
||
|
||
```yaml
|
||
services:
|
||
frontend:
|
||
environment:
|
||
- NODE_ENV=production
|
||
volumes:
|
||
- ./frontend/dist:/app/dist:ro
|
||
streamlit:
|
||
environment:
|
||
- STREAMLIT_ENV=production
|
||
volumes:
|
||
- ./streamlit:/app:ro
|
||
```
|
||
|
||
Adaptez selon vos besoins (mode lecture/écriture, fichiers de config, secrets via `.env`).
|
||
|
||
## 5) Dépannage
|
||
|
||
- Vérifiez que les dossiers `./frontend` et `./streamlit` existent bien au même niveau que `docker-compose.yml`.
|
||
- Assurez-vous que `frontend/package.json` contient les scripts et dépendances nécessaires au build.
|
||
- Assurez-vous que `streamlit/requirements.txt` liste toutes les dépendances Python requises et que `app.py` existe.
|
||
- Si un port est déjà utilisé, changez les ports exposés dans `docker-compose.yml`.
|
||
- Pour reconstruire proprement après des changements majeurs : `docker compose build --no-cache`.
|
||
|
||
## 6) Résumé des ports et conteneurs
|
||
|
||
- `frontend` → conteneur `frontend-app` → `http://localhost:4200`
|
||
- `streamlit` → conteneur `streamlit-app` → `http://localhost:8501`
|