- 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.
202 lines
4.3 KiB
Markdown
202 lines
4.3 KiB
Markdown
# 🐳 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** : [data/README.md](./data/README.md)
|