# DiagramPH - Docker Deployment Guide ## 🐳 Docker Compose Setup Ce projet utilise Docker Compose pour déployer le backend (FastAPI) et le frontend (Next.js) ensemble. ### Architecture ``` ┌─────────────────┐ ┌──────────────────┐ │ Frontend │─────▶│ Backend │ │ (Next.js) │ │ (FastAPI) │ │ Port: 3000 │ │ Port: 8001 │ └─────────────────┘ └──────────────────┘ │ │ └────────────────────────┘ Docker Network ``` ## 🚀 Démarrage Rapide ### Production ```bash # Build et démarrer tous les services docker-compose up --build # En mode détaché (background) docker-compose up -d --build # Arrêter les services docker-compose down # Arrêter et supprimer les volumes docker-compose down -v ``` Accès: - **Frontend**: http://localhost:3000 - **Backend API**: http://localhost:8001 - **API Docs**: http://localhost:8001/docs ### Développement Pour le développement avec hot-reload: ```bash # Démarrer en mode développement docker-compose -f docker-compose.yml -f docker-compose.dev.yml up # Rebuild si nécessaire docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build ``` ## 📦 Services ### Backend (Python FastAPI) - **Port**: 8001 - **Base Image**: python:3.12-slim - **Hot Reload**: Activé avec `--reload` en dev - **Healthcheck**: GET /api/v1/refrigerants/ ### Frontend (Next.js) - **Port**: 3000 - **Base Image**: node:20-alpine - **Build**: Standalone output optimisé - **Healthcheck**: HTTP GET sur port 3000 ## 🔧 Configuration ### Variables d'Environnement #### Backend ```env PYTHONUNBUFFERED=1 PYTHONPATH=/app:/app/IPM_SO:/app/IPM_DLL LD_LIBRARY_PATH=/app/IPM_SO:/app/IPM_DLL ``` #### Frontend ```env NODE_ENV=production NEXT_PUBLIC_API_URL=http://backend:8001/api/v1 ``` ### Volumes Les volumes sont montés pour permettre le hot-reload en développement: - `./app` → Backend code - `./Frontend` → Frontend code - `./IPM_SO` et `./IPM_DLL` → Native libraries ## 📝 Commandes Utiles ```bash # Voir les logs docker-compose logs -f # Logs d'un service spécifique docker-compose logs -f backend docker-compose logs -f frontend # Reconstruire un service docker-compose build backend docker-compose build frontend # Exécuter une commande dans un conteneur docker-compose exec backend python -m pytest docker-compose exec frontend npm test # Voir l'état des services docker-compose ps # Redémarrer un service docker-compose restart backend docker-compose restart frontend ``` ## 🐛 Troubleshooting ### Le frontend ne peut pas se connecter au backend Vérifiez que: 1. Le backend est en cours d'exécution: `docker-compose ps` 2. Le healthcheck du backend est OK: `docker-compose logs backend` 3. Les deux services sont sur le même réseau Docker ### Erreur de build frontend ```bash # Nettoyer le cache et rebuild docker-compose build --no-cache frontend ``` ### Erreur de permissions ```bash # Sur Linux/Mac, ajuster les permissions sudo chown -R $USER:$USER Frontend/.next ``` ## 📚 Structure des Fichiers ``` . ├── docker-compose.yml # Configuration production ├── docker-compose.dev.yml # Override pour développement ├── Dockerfile # Backend Dockerfile ├── Frontend/ │ ├── Dockerfile # Frontend Dockerfile │ ├── .dockerignore │ └── next.config.js ├── app/ # Code backend └── README-DOCKER.md # Ce fichier ``` ## 🔒 Production Deployment Pour un déploiement en production: 1. **Désactiver le mode debug**: - Retirer `--reload` du backend - Utiliser `NODE_ENV=production` 2. **Utiliser des secrets**: ```yaml environment: - DATABASE_URL=${DATABASE_URL} ``` 3. **Configurer un reverse proxy** (Nginx/Traefik) 4. **Ajouter SSL/TLS** avec Let's Encrypt ## 📄 License MIT