90 lines
3 KiB
Markdown
90 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`
|