# Guide de déploiement ## Vue d'ensemble Le projet peut être déployé de plusieurs façons : - Docker Compose (recommandé pour la production) - Docker simple - Build statique avec serveur web ## Déploiement avec Docker ### Configuration Docker Le projet contient plusieurs configurations Docker : - `docker/Dockerfile` : Dockerfile principal avec multi-stage build - `docker/docker-compose.yml` : Configuration de base - `docker/docker-compose.labels.yml` : Labels pour le reverse proxy - `docker/docker-compose.local.yml` : Configuration pour développement local - `Dockerfile` (racine) : Dockerfile alternatif - `docker-compose.yml` (racine) : Docker Compose alternatif ### Build de l'image Docker #### Avec le Dockerfile principal ```bash cd docker docker compose build ``` #### Avec build args ```bash docker build \ --build-arg BASE_PATH="/techradar" \ --build-arg UID=1000 \ --build-arg GID=1000 \ -f docker/Dockerfile \ -t techradar:latest \ . ``` ### Variables d'environnement - **BASE_PATH** : Chemin de base pour l'application (défaut: `/`) - **UID** : User ID pour l'utilisateur dans le conteneur (défaut: 1000) - **GID** : Group ID pour l'utilisateur dans le conteneur (défaut: 1000) ### Démarrage avec Docker Compose ```bash cd docker docker compose up -d ``` L'application sera accessible sur le port 3000. ### Configuration du basePath Le script `docker-entrypoint.sh` modifie dynamiquement le `basePath` dans `config.json` au démarrage du conteneur en utilisant la variable d'environnement `BASE_PATH`. ## Déploiement statique ### Build des fichiers statiques ```bash npm install npm run build ``` Les fichiers sont générés dans le répertoire `build/`. ### Servir avec un serveur web #### Nginx ```nginx server { listen 80; server_name coeurbox.syoul.fr; root /chemin/vers/build; index index.html; location / { try_files $uri $uri/ /index.html; } } ``` #### Apache ```apache ServerName coeurbox.syoul.fr DocumentRoot /chemin/vers/build Options Indexes FollowSymLinks AllowOverride All Require all granted ``` ## Déploiement avec Drone CI Le projet est configuré pour le déploiement automatique via Drone CI (`.drone.yml`). ### Pipeline de déploiement 1. **Build** : Construction de l'image Docker 2. **Déploiement** : Lancement du conteneur avec Docker Compose 3. **Notification** : Envoi d'une notification Telegram ### Configuration Drone Le pipeline utilise : - Variables d'environnement dynamiques basées sur le dépôt Git - Labels pour le reverse proxy (Traefik) - Notifications Telegram en cas de succès/échec ### Variables d'environnement Drone - `DRONE_REPO_OWNER` : Propriétaire du dépôt - `DRONE_REPO_NAME` : Nom du dépôt - `DRONE_COMMIT_BRANCH` : Branche du commit Ces variables sont utilisées pour générer le `BASE_PATH` dynamiquement. ## Déploiement en production ### Étapes recommandées 1. **Préparer l'environnement** ```bash git clone https://git.open.us.org/AJR/TechradarDev.git cd TechradarDev ``` 2. **Configurer les variables** - Définir `BASE_PATH` selon votre configuration - Ajuster les ports si nécessaire 3. **Build et démarrage** ```bash cd docker docker compose -f docker-compose.yml -f docker-compose.labels.yml up -d --build ``` 4. **Vérifier le déploiement** - Accéder à l'URL configurée - Vérifier les logs : `docker compose logs -f` ### Reverse proxy Le projet est configuré pour fonctionner derrière un reverse proxy (Traefik) via les labels dans `docker-compose.labels.yml`. ### Sécurité - Utiliser HTTPS en production - Configurer les headers de sécurité appropriés - Limiter l'accès si nécessaire - Surveiller les logs ## Mise à jour ### Mettre à jour le contenu 1. Modifier les fichiers dans `radar/` 2. Rebuild l'image : ```bash docker compose build docker compose up -d ``` ### Mettre à jour les dépendances 1. Modifier `package.json` si nécessaire 2. Rebuild l'image complète ## Monitoring ### Logs Docker ```bash # Voir les logs docker compose logs -f # Logs du dernier démarrage docker compose logs --tail=100 ``` ### Santé de l'application L'application expose le port 3000. Vérifier la santé avec : ```bash curl http://localhost:3000/techradar ``` ## Rollback En cas de problème, revenir à une version précédente : ```bash # Arrêter le conteneur actuel docker compose down # Checkout une version précédente git checkout # Rebuild et redémarrer docker compose build docker compose up -d ``` ## Troubleshooting ### Problème de basePath Si l'application ne se charge pas correctement : - Vérifier la variable `BASE_PATH` - Vérifier les logs du conteneur - Vérifier la configuration du reverse proxy ### Problème de permissions Si des erreurs de permissions apparaissent : - Vérifier les UID/GID dans le Dockerfile - Vérifier les permissions des volumes montés ### Problème de build Si le build échoue : - Vérifier la version de Node.js - Vérifier les dépendances npm - Nettoyer le cache : `docker system prune -a`