# 🐳 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 ``` **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)