4.1 KiB
4.1 KiB
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
# 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:
# 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
--reloaden 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
PYTHONUNBUFFERED=1
PYTHONPATH=/app:/app/IPM_SO:/app/IPM_DLL
LD_LIBRARY_PATH=/app/IPM_SO:/app/IPM_DLL
Frontend
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_SOet./IPM_DLL→ Native libraries
📝 Commandes Utiles
# 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:
- Le backend est en cours d'exécution:
docker-compose ps - Le healthcheck du backend est OK:
docker-compose logs backend - Les deux services sont sur le même réseau Docker
Erreur de build frontend
# Nettoyer le cache et rebuild
docker-compose build --no-cache frontend
Erreur de permissions
# 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:
-
Désactiver le mode debug:
- Retirer
--reloaddu backend - Utiliser
NODE_ENV=production
- Retirer
-
Utiliser des secrets:
environment: - DATABASE_URL=${DATABASE_URL} -
Configurer un reverse proxy (Nginx/Traefik)
-
Ajouter SSL/TLS avec Let's Encrypt
📄 License
MIT