ng-implementation/devops/README.md

90 lines
3 KiB
Markdown
Raw Normal View History

2025-10-03 11:08:34 +02:00
# 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 lapplication Angular et ses `package.json`
- `./streamlit/` contient lapplication 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 lapplication (`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 lappli 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 denvironnement 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`