# 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 - Portainer (pour le Radar Business) ## 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 - `Dockerfile.business` : Dockerfile spécifique pour le Radar Business - `docker-compose.business.yml` : Docker Compose pour le Radar Business (Portainer) ### 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 du Radar Technologique Laplank avec Portainer Le Radar Technologique Laplank est déployé via Portainer en utilisant une stack Docker Compose. ### Configuration Portainer 1. **Créer une nouvelle stack** dans Portainer 2. **Nom de la stack** : `laplank-radar-technologique` (ou autre nom) 3. **Méthode** : Git Repository 4. **Repository URL** : `https://git.open.us.org/AJR/TechradarDev.git` 5. **Reference** : `refs/heads/dev-tech` (branche actuelle) 6. **Compose path** : `docker-compose.business.yml` **Note** : Si le dépôt est privé, utiliser un Personal Access Token dans l'URL : - `https://@git.open.us.org/AJR/TechradarDev.git` ### Configuration Docker Compose Laplank Le fichier `docker-compose.business.yml` configure : - **Port** : `3006:3000` (port 3006 de l'hôte mappé vers le port 3000 du conteneur) - **Container name** : `laplank-radar-business` - **Image** : Construite depuis `Dockerfile.business` lors du déploiement - **Environnement** : `NODE_ENV=production` - **Restart policy** : `unless-stopped` (redémarre automatiquement en cas d'arrêt) **Accès à l'application :** - URL : `http://:3006` - Mot de passe : `laplank-radar` ### Dockerfile Business Le `Dockerfile.business` : - Utilise Node.js 20 Alpine - Configure les variables d'environnement pour désactiver Husky - Installe les dépendances avec `--ignore-scripts` - Patche le package `aoe_technology_radar` pour inclure `gray-matter` - Pré-installe `.techradar` pendant le build - Applique la configuration business (`config-business.json`) - Expose le port 3000 - Démarre via `scripts/start-business.sh` ### Authentification Git pour Portainer Si le dépôt est privé, utiliser un **Personal Access Token** (Gitea) : 1. Créer un token dans Gitea avec les permissions de lecture 2. Utiliser l'URL avec le token : `https://@git.open.us.org/AJR/TechradarDev.git` 3. Exemple : `https://glpat-xxxxxxxxxxxx@git.open.us.org/AJR/TechradarDev.git` **Configuration complète pour dépôt privé :** - **Repository URL** : `https://@git.open.us.org/AJR/TechradarDev.git` - **Reference** : `refs/heads/dev-tech` - **Compose path** : `docker-compose.business.yml` ### Mise à jour Pour mettre à jour le Radar Technologique Laplank dans Portainer : **Option 1 : Rebuild depuis Git (recommandé)** 1. Aller dans **Stacks** → Sélectionner la stack `laplank-radar-technologique` 2. Cliquer sur **Editor** 3. Cliquer sur **Update the stack** 4. Portainer va reconstruire l'image depuis la dernière version de la branche `dev-tech` **Option 2 : Pull & Redeploy** 1. Aller dans **Containers** → Sélectionner `laplank-radar-business` 2. Cliquer sur **Recreate** (si l'image a été rebuild ailleurs) **Vérification après mise à jour :** - Vérifier les logs : **Containers** → `laplank-radar-business` → **Logs** - Tester l'application : `http://:3006` ## 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 **Radar Principal** : Expose le port 3000. Vérifier avec : ```bash curl http://localhost:3000/techradar ``` **Radar Technologique Laplank** : Expose le port 3006 (mappé depuis 3000). Vérifier avec : ```bash curl http://localhost:3006/ ``` Note : Le Radar Technologique Laplank est protégé par un mot de passe, donc la réponse peut être l'écran d'authentification. ## 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`