diagram_ph/README-DOCKER.md

180 lines
4.1 KiB
Markdown

# 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