- 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.
4.3 KiB
4.3 KiB
🐳 Docker - TowerControl
Guide d'utilisation de TowerControl avec Docker.
🚀 Démarrage rapide
Production
# Démarrer le service de production
docker-compose up -d towercontrol
# Accéder à l'application
open http://localhost:3006
Développement
# 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
# 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
# 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
# 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é
# 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
# 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é
# Trouver le processus qui utilise le port
lsof -i :3006
kill -9 <PID>
Base de données corrompue
# Restaurer depuis une sauvegarde
docker-compose exec towercontrol npm run backup:restore filename.db.gz
Permissions
# Corriger les permissions du dossier data
sudo chown -R $USER:$USER ./data
📊 Monitoring
Espace disque
# Taille du dossier data
du -sh ./data
# Espace libre
df -h .
Performance
# 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
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 | data/README.md