Aller au contenu principal

Composants utilisés

Cette page décrit en détail les conteneurs Docker du stack OpenVLE : configuration, ports, dépendances et Health Checks. Pour une vue d'ensemble de tous les composants et le diagramme d'architecture, consultez la vue d'ensemble de l'infrastructure.

Applicable uniquement à la configuration standard

Cette page se réfère à l'état standard du dépôt officiel. En cas de configurations différentes (par exemple avec des Dockerfiles personnalisés, des fichiers .env/frontend.env modifiés ou une autre infrastructure), les informations peuvent différer.

Application

Le Backend et le Frontend constituent la couche applicative d'OpenVLE. Le Backend fournit l'API REST, le Frontend l'interface web.

ServiceDescriptionPortDépendances
backendPython 3 / FastAPI — API REST, logique métier, authentification, intégration Proxmox, envoi d'e-mails8000 → 80MariaDB, MongoDB, Redis (tous healthy)
frontendVue.js / Nginx — Interface web depuis laquelle toutes les fonctionnalités sont accessibles80 → 80backend (côté client dans le navigateur)
  • Le Backend (SERVICE_ROLE=backend) est le composant central : il traite les requêtes API, vérifie les permissions, coordonne tous les processus et met les tâches en arrière-plan dans la file d'attente Redis.
  • Le Frontend est compilé lors du build et déployé dans un conteneur Nginx. L'URL de l'API et les paramètres optionnels (par exemple le DSN Sentry) sont configurés via frontend.env. Des logos personnalisés peuvent optionnellement être intégrés via des montages static/.

Traitement en arrière-plan

Le système de tâches se compose de plusieurs conteneurs Worker et d'un Scheduler. La répartition sur des Workers spécialisés garantit que les opérations de longue durée (par exemple le clonage de VMs) ne bloquent pas les autres tâches. Tous les Workers et le Scheduler nécessitent MariaDB (healthy) et Redis (healthy).

ServiceSERVICE_ROLEQueuesReplicasDescription
workerworkercore_periodic, guacamole, mails, moodle, pve_vm_actions4Tâches générales : actions VM, e-mail, Guacamole, Moodle
worker-vm-cloneworker-vm-clonepve_vm_clone1Opérations de clonage et de suppression de VMs (longue durée)
worker-periodicworker-periodicpve_periodic1Polling Proxmox (statut VM/modèle, informations noeud)
schedulerscheduler1Met les tâches périodiques dans la file d'attente selon un planning cron

Vous trouverez plus de détails sur le système de tâches, les queues et la gestion des erreurs sous Système de tâches.

Bases de données

Trois systèmes de bases de données couvrent des besoins différents. Aucun des conteneurs de base de données ne publie de ports — ils sont exclusivement accessibles en interne.

ServiceTypeFonctionPersistanceHealth Check
mariadbMariaDB (SQL)Entités principales : utilisateurs, rôles, permissions, environnements, événements, VMs./mariadb/datamariadb-admin ping
mongodbMongoDB (NoSQL)Activités, événements système, journaux d'audit, historiques de modifications./mongodbmongosh eval db.adminCommand('ping')
redisRedis (In-Memory)File d'attente des tâches et cache pour Worker/SchedulerAOF + Snapshot (save 60 1)redis-cli incr ping
  • MariaDB — Le schéma et les données initiales sont créés automatiquement lors du premier démarrage par le Backend/Worker (migration avec mécanisme de verrouillage). Accès par le Backend, le Worker et le Scheduler.
  • MongoDB — Accès exclusivement via le Backend. Authentification via l'utilisateur root depuis .env.
  • Redis — Protégé par mot de passe via .env. Configuré avec AOF (appendonly yes) et snapshot périodique pour le stockage persistant.

Vous trouverez plus de détails sur l'architecture des données sous Bases de données.

Environnement de développement

Les services suivants ne sont pas inclus dans le stack de production et ne sont disponibles que dans l'environnement de développement ou local :

ServiceConfigurationFonctionPort
phpmyadmindocker-compose.dev.ymlInterface web pour l'administration de MariaDB8888
fake-smtpdocker-compose.dev.ymlServeur SMTP local pour tester l'envoi d'e-mails1025 (SMTP), 8088 (Web-UI)
Réseau interne

Tous les services sont connectés en interne via le réseau Docker openvle-internal. Seuls le Frontend et le Backend sont exposés à l'extérieur. Vous trouverez plus de détails sous Réseau & Docker.