docs: ajouter documentation complète du projet dans docs/
This commit is contained in:
239
docs/deploiement.md
Normal file
239
docs/deploiement.md
Normal file
@@ -0,0 +1,239 @@
|
||||
# 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
|
||||
<VirtualHost *:80>
|
||||
ServerName coeurbox.syoul.fr
|
||||
DocumentRoot /chemin/vers/build
|
||||
|
||||
<Directory /chemin/vers/build>
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
## 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 <commit-hash>
|
||||
|
||||
# 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`
|
||||
|
||||
Reference in New Issue
Block a user