chore: update backup configurations and directory structure
- Modified `.gitignore` to exclude all files in the `/data/` directory. - Enhanced `BACKUP.md` with customization options for backup storage paths and updated database path configurations. - Updated `docker-compose.yml` to reflect new paths for database and backup storage. - Adjusted `Dockerfile` to create a dedicated backups directory. - Refactored `BackupService` to utilize environment variables for backup paths, improving flexibility and reliability. - Deleted `dev.db` as it is no longer needed in the repository.
This commit is contained in:
201
DOCKER.md
Normal file
201
DOCKER.md
Normal file
@@ -0,0 +1,201 @@
|
||||
# 🐳 Docker - TowerControl
|
||||
|
||||
Guide d'utilisation de TowerControl avec Docker.
|
||||
|
||||
## 🚀 Démarrage rapide
|
||||
|
||||
### Production
|
||||
```bash
|
||||
# Démarrer le service de production
|
||||
docker-compose up -d towercontrol
|
||||
|
||||
# Accéder à l'application
|
||||
open http://localhost:3006
|
||||
```
|
||||
|
||||
### Développement
|
||||
```bash
|
||||
# Démarrer le service de développement avec live reload
|
||||
docker-compose --profile dev up towercontrol-dev
|
||||
|
||||
# Accéder à l'application
|
||||
open http://localhost:3005
|
||||
```
|
||||
|
||||
## 📋 Services disponibles
|
||||
|
||||
### 🚀 `towercontrol` (Production)
|
||||
- **Port** : 3006
|
||||
- **Base de données** : `./data/prod.db`
|
||||
- **Sauvegardes** : `./data/backups/`
|
||||
- **Mode** : Optimisé, standalone
|
||||
- **Restart** : Automatique
|
||||
|
||||
### 🛠️ `towercontrol-dev` (Développement)
|
||||
- **Port** : 3005
|
||||
- **Base de données** : `./data/dev.db`
|
||||
- **Sauvegardes** : `./data/backups/` (partagées)
|
||||
- **Mode** : Live reload, debug
|
||||
- **Profile** : `dev`
|
||||
|
||||
## 📁 Structure des données
|
||||
|
||||
```
|
||||
./data/ # Mappé vers /app/data dans les conteneurs
|
||||
├── README.md # Documentation du dossier data
|
||||
├── prod.db # Base SQLite production
|
||||
├── dev.db # Base SQLite développement
|
||||
└── backups/ # Sauvegardes automatiques
|
||||
├── towercontrol_2025-01-15T10-30-00-000Z.db.gz
|
||||
└── ...
|
||||
```
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
### Variables d'environnement
|
||||
|
||||
| Variable | Production | Développement | Description |
|
||||
|----------|------------|---------------|-------------|
|
||||
| `NODE_ENV` | `production` | `development` | Mode d'exécution |
|
||||
| `DATABASE_URL` | `file:./data/prod.db` | `file:./data/dev.db` | Base Prisma |
|
||||
| `BACKUP_DATABASE_PATH` | `./data/prod.db` | `./data/dev.db` | Source backup |
|
||||
| `BACKUP_STORAGE_PATH` | `./data/backups` | `./data/backups` | Dossier backup |
|
||||
| `TZ` | `Europe/Paris` | `Europe/Paris` | Fuseau horaire |
|
||||
|
||||
### Ports
|
||||
|
||||
- **Production** : `3006:3000`
|
||||
- **Développement** : `3005:3000`
|
||||
|
||||
## 📚 Commandes utiles
|
||||
|
||||
### Gestion des conteneurs
|
||||
```bash
|
||||
# Voir les logs
|
||||
docker-compose logs -f towercontrol
|
||||
docker-compose logs -f towercontrol-dev
|
||||
|
||||
# Arrêter les services
|
||||
docker-compose down
|
||||
|
||||
# Reconstruire les images
|
||||
docker-compose build
|
||||
|
||||
# Nettoyer tout
|
||||
docker-compose down -v --rmi all
|
||||
```
|
||||
|
||||
### Gestion des données
|
||||
```bash
|
||||
# Sauvegarder les données
|
||||
docker-compose exec towercontrol npm run backup:create
|
||||
|
||||
# Lister les sauvegardes
|
||||
docker-compose exec towercontrol npm run backup:list
|
||||
|
||||
# Accéder au shell du conteneur
|
||||
docker-compose exec towercontrol sh
|
||||
```
|
||||
|
||||
### Base de données
|
||||
```bash
|
||||
# Migrations Prisma
|
||||
docker-compose exec towercontrol npx prisma migrate deploy
|
||||
|
||||
# Reset de la base (dev uniquement)
|
||||
docker-compose exec towercontrol-dev npx prisma migrate reset
|
||||
|
||||
# Studio Prisma (dev)
|
||||
docker-compose exec towercontrol-dev npx prisma studio
|
||||
```
|
||||
|
||||
## 🔍 Debugging
|
||||
|
||||
### Vérifier la santé
|
||||
```bash
|
||||
# Health check
|
||||
curl http://localhost:3006/api/health
|
||||
curl http://localhost:3005/api/health
|
||||
|
||||
# Vérifier les variables d'env
|
||||
docker-compose exec towercontrol env | grep -E "(DATABASE|BACKUP|NODE_ENV)"
|
||||
```
|
||||
|
||||
### Logs détaillés
|
||||
```bash
|
||||
# Logs avec timestamps
|
||||
docker-compose logs -f -t towercontrol
|
||||
|
||||
# Logs des 100 dernières lignes
|
||||
docker-compose logs --tail=100 towercontrol
|
||||
```
|
||||
|
||||
## 🚨 Dépannage
|
||||
|
||||
### Problèmes courants
|
||||
|
||||
**Port déjà utilisé**
|
||||
```bash
|
||||
# Trouver le processus qui utilise le port
|
||||
lsof -i :3006
|
||||
kill -9 <PID>
|
||||
```
|
||||
|
||||
**Base de données corrompue**
|
||||
```bash
|
||||
# Restaurer depuis une sauvegarde
|
||||
docker-compose exec towercontrol npm run backup:restore filename.db.gz
|
||||
```
|
||||
|
||||
**Permissions**
|
||||
```bash
|
||||
# Corriger les permissions du dossier data
|
||||
sudo chown -R $USER:$USER ./data
|
||||
```
|
||||
|
||||
## 📊 Monitoring
|
||||
|
||||
### Espace disque
|
||||
```bash
|
||||
# Taille du dossier data
|
||||
du -sh ./data
|
||||
|
||||
# Espace libre
|
||||
df -h .
|
||||
```
|
||||
|
||||
### Performance
|
||||
```bash
|
||||
# Stats des conteneurs
|
||||
docker stats
|
||||
|
||||
# Utilisation mémoire
|
||||
docker-compose exec towercontrol free -h
|
||||
```
|
||||
|
||||
## 🔒 Production
|
||||
|
||||
### Recommandations
|
||||
- Utiliser un reverse proxy (nginx, traefik)
|
||||
- Configurer HTTPS
|
||||
- Sauvegarder régulièrement `./data/`
|
||||
- Monitorer l'espace disque
|
||||
- Logs centralisés
|
||||
|
||||
### Exemple nginx
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name towercontrol.example.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:3006;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
📚 **Voir aussi** : [BACKUP.md](./BACKUP.md) | [data/README.md](./data/README.md)
|
||||
Reference in New Issue
Block a user