- Implement UpdateService for image version checking and atomic updates - Add DockerComposeManager for centralized docker-compose management - Create 12 docker-compose references in /home/innotex/Docker - Add 13 new API endpoints (6 for images, 7 for compose management) - Add comprehensive documentation and examples
9.0 KiB
🎯 Résumé - Système de Mise à Jour Docker
Implémentation complète d'un système de mise à jour Docker inspiré de TrueNAS Scale pour InnotexBoard.
✅ Ce qui a été fait
1. Backend API (FastAPI)
Services créés:
-
update_service.py(275 lignes)- Classe
UpdateServicepour gérer les mises à jour - Support du Docker Registry V2 API
- Versioning sémantique
- Mise à jour atomique des conteneurs
- Nettoyage des images orphelines
- Parsing intelligent des noms d'images
- Classe
-
compose_manager.py(185 lignes)- Classe
DockerComposeManagerpour centraliser la gestion - Découverte automatique des docker-compose
- Commandes complètes: start, stop, restart, down, pull, logs
- Retour d'état en JSON
- Classe
Endpoints créés:
Docker Images Management
GET /api/v1/docker/images # Lister toutes les images
GET /api/v1/docker/images/check-update/{image_name} # Vérifier une mise à jour
GET /api/v1/docker/images/check-all-updates # Vérifier toutes les mises à jour
POST /api/v1/docker/images/pull # Télécharger une image
POST /api/v1/docker/containers/{id}/update-image # Mettre à jour un conteneur
POST /api/v1/docker/images/prune # Nettoyer les images orphelines
Docker Compose Management
GET /api/v1/docker/compose/list # Lister tous les docker-compose
GET /api/v1/docker/compose/{name}/status # Vérifier l'état
POST /api/v1/docker/compose/{name}/start # Démarrer
POST /api/v1/docker/compose/{name}/stop # Arrêter
POST /api/v1/docker/compose/{name}/down # Arrêter et supprimer
POST /api/v1/docker/compose/{name}/restart # Redémarrer
POST /api/v1/docker/compose/{name}/pull # Mettre à jour les images
GET /api/v1/docker/compose/{name}/logs # Récupérer les logs
2. Docker Compose References
Créé: /home/innotex/Docker/
11 docker-compose de référence:
- portainer - Interface GUI Docker
- sonarr - Gestion des séries TV
- radarr - Gestion des films
- qbittorrent - Client torrent
- jellyfin - Serveur média open-source
- plex - Serveur média premium
- nextcloud - Cloud self-hosted
- nginx - Web server / Reverse proxy
- pihole - DNS ad-blocker
- homeassistant - Domotique
- watchtower - Mise à jour automatique
- monitoring - Prometheus + Grafana
Chaque docker-compose inclut:
- Labels de versioning (
com.innotexboard.*) - Support de la détection de mises à jour
- Configuration prête à l'emploi
- Volumes et ports configurés
3. Documentation
-
DOCKER_UPDATE_SYSTEM.md - Documentation complète
- Architecture du système
- Workflow de mise à jour (5 étapes)
- API endpoints complète avec exemples cURL
- Structure des fichiers
- Checklist de déploiement
- Troubleshooting
-
/home/innotex/Docker/README.md - Guide d'utilisation
- Quickstart pour chaque application
- Instructions de mise à jour
- Labels personnalisés
- Structure des répertoires
-
docker-compose-registry.json - Registry de configuration
- Métadonnées de chaque service
- Stratégies de mise à jour
- Schéma des labels
4. Configuration Principale
docker-compose.yml - Mis à jour avec:
labels:
com.innotexboard.app: "app-name"
com.innotexboard.service: "service-role"
com.innotexboard.description: "Description"
com.innotexboard.version: "1.0.0"
com.innotexboard.update-enabled: "true"
🏗️ Architecture
InnotexBoard
├── Backend FastAPI
│ ├── Services
│ │ ├── update_service.py ✅ NOUVEAU
│ │ ├── compose_manager.py ✅ NOUVEAU
│ │ └── docker_service.py (existant)
│ │
│ └── API Endpoints
│ ├── docker.py ✅ AMÉLIORÉ
│ └── compose.py ✅ NOUVEAU
│
├── Docker References
│ └── /home/innotex/Docker/
│ ├── 11 × docker-compose.*.yml ✅ NOUVEAU
│ ├── README.md ✅ NOUVEAU
│ └── registry.json ✅ NOUVEAU
│
└── Documentation
├── DOCKER_UPDATE_SYSTEM.md ✅ NOUVEAU
├── /Docker/README.md ✅ NOUVEAU
└── docker-compose-registry.json ✅ NOUVEAU
🚀 Utilisation
Démarrer un service
curl -X POST http://localhost:8000/api/v1/docker/compose/portainer/start
Vérifier les mises à jour
curl http://localhost:8000/api/v1/docker/images/check-all-updates
Mettre à jour une image
curl -X POST http://localhost:8000/api/v1/docker/containers/{id}/update-image \
-H "Content-Type: application/json" \
-d '{"new_image":"portainer/portainer-ce","new_tag":"latest"}'
Récupérer les logs
curl http://localhost:8000/api/v1/docker/compose/portainer/logs?tail=50
📊 Statistiques
| Élément | Nombre | Statut |
|---|---|---|
| Services créés | 2 | ✅ |
| Endpoints Docker Images | 6 | ✅ |
| Endpoints Docker Compose | 7 | ✅ |
| Docker Compose références | 11 | ✅ |
| Lignes de code backend | 460+ | ✅ |
| Fichiers créés | 8 | ✅ |
| Fichiers modifiés | 3 | ✅ |
🔄 Workflow de Mise à Jour (TrueNAS Scale Style)
1. DÉTECTION
└─ Check Docker Registry V2 API
└─ Compare versions (semantic versioning)
2. NOTIFICATION
└─ List available updates
└─ Show version differences
3. TÉLÉCHARGEMENT
└─ Pull new image
└─ Verify integrity
4. MISE À JOUR ATOMIQUE
├─ Stop container
├─ Pull new image
├─ Remove old container
├─ Create new container with new image
└─ Start new container
5. NETTOYAGE
└─ Remove dangling images
└─ Free up disk space
🔑 Fonctionnalités Principales
✅ Découverte automatique des images
- Parse intelligent des noms Docker (registry/repo:tag)
- Support docker.io, registries personnalisés
✅ Vérification des mises à jour
- Docker Registry V2 API integration
- Versioning sémantique (1.2.3)
- Détection automatique du dernier tag stable
✅ Mise à jour atomique
- Stop container safely
- Pull new image
- Recreate container with new image
- Automatic rollback support (old image retained)
✅ Gestion centralisée docker-compose
- Découverte automatique
- Commandes standardisées (start/stop/restart)
- Gestion des logs
- Pull automatique des images
✅ Nettoyage automatique
- Remove dangling images
- Free up disk space
- Optional automatic pruning
📁 Fichiers Modifiés/Créés
Créés:
backend/app/services/update_service.py (275 lignes)
backend/app/services/compose_manager.py (185 lignes)
backend/app/api/endpoints/compose.py (125 lignes)
DOCKER_UPDATE_SYSTEM.md (450 lignes)
/home/innotex/Docker/docker-compose.*.yml (11 fichiers)
/home/innotex/Docker/README.md (250 lignes)
/home/innotex/Docker/docker-compose-registry.json
test_docker_updates.sh
Modifiés:
docker-compose.yml (+ labels)
backend/app/api/endpoints/docker.py (+ 8 endpoints)
backend/app/api/routes.py (+ compose router)
🎓 Technologies Utilisées
- FastAPI - Framework web asynchrone
- Docker SDK - Communication avec Docker daemon
- Requests - Docker Registry V2 API calls
- Subprocess - Exécution docker-compose
- Pydantic - Validation des données
🔒 Sécurité
- ✅ Tous les endpoints sécurisés par authentification JWT
- ✅ Permissions vérifiées via
get_current_user - ✅ Validation des inputs
- ✅ Gestion des erreurs robuste
📝 Notes d'Implémentation
Points Forts:
✅ Architecture similaire à TrueNAS Scale
✅ Support complet du versioning Docker
✅ API centralisée et cohérente
✅ Documentation exhaustive
✅ Docker Compose references prêtes à l'emploi
Améliorations Futures:
🔜 Interface web complète (frontend Vue.js)
🔜 Notifications de mise à jour
🔜 Historique des mises à jour
🔜 Rollback automatique en cas d'erreur
🔜 Mise à jour programmée (cron)
🔜 Support des registries privés
🔜 Webhooks Docker
✨ Prochaines Étapes
- Frontend - Créer des composants Vue.js pour l'interface utilisateur
- Tests - Écrire des tests unitaires pour les services
- CI/CD - Intégrer avec un pipeline de déploiement
- Notifications - Ajouter des alertes (email, webhook, etc.)
- Monitoring - Intégrer Prometheus pour les métriques
📞 Support
Pour toute question ou problème:
- Consulter
DOCKER_UPDATE_SYSTEM.md - Consulter
/home/innotex/Docker/README.md - Vérifier les logs du backend
- Tester avec
test_docker_updates.sh
Statut: ✅ Implémentation complète
Date: 16 janvier 2026
Version: 1.0.0