diagram_ph/README-DOCKER.md

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:

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 --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

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_SO et ./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:

  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

# 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:

  1. Désactiver le mode debug:

    • Retirer --reload du backend
    • Utiliser NODE_ENV=production
  2. Utiliser des secrets:

    environment:
      - DATABASE_URL=${DATABASE_URL}
    
  3. Configurer un reverse proxy (Nginx/Traefik)

  4. Ajouter SSL/TLS avec Let's Encrypt

📄 License

MIT