Files
towercontrol/DOCKER.md
Julien Froidefond 618e774a30 fix: update database path in README and remove backup link
- Changed `DATABASE_URL` in `data/README.md` to use a relative path for better compatibility.
- Removed the reference to `BACKUP.md` in `DOCKER.md` as it is no longer relevant.
2025-09-21 07:18:49 +02:00

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 : data/README.md