Aller au contenu
JelinaJelina DocumentationDocumentation technique
Retour au site officiel

Compatibilité et extensions docker-compose

JelinaOS fournit une orchestration prête à l’emploi, entièrement compatible avec la syntaxe docker-compose 2.x. Elle se configure dans une Release cloud ou par l’interface locale, puis l’agent la déploie automatiquement. Elle étend aussi cette approche à la gestion déclarative des applications non conteneurisées avec ProgramSet, afin de gérer les programmes traditionnels par configuration.

Le fichier d’orchestration est une configuration déclarative définie dans une Release ou par l’interface locale, synchronisée puis déployée par l’agent. Les commandes Docker locales servent aux opérations courantes sur un conteneur ; l’orchestration multiservice est assurée par l’agent sans outil supplémentaire sur l’équipement.

La prise en charge repose sur la spécification 2.x pour faciliter la migration des fichiers courants :

  • Définitions de services, réseaux, volumes, variables d’environnement et dépendances ;
  • Champs et comportements introduits dans les versions 2.x ;
  • Les champs ajoutés en 3.x ne sont pas pris en charge ; utilisez la syntaxe 2.x lors de la migration.
version: "2.4"
services:
app:
image: myapp:1.0.0
restart: always
environment:
MODE: production
ports:
- "8080:80"
worker:
image: myworker:1.0.0
restart: on-failure
depends_on:
- app

Applications non conteneurisées : gestion déclarative ProgramSet

Section intitulée « Applications non conteneurisées : gestion déclarative ProgramSet »

Les sites industriels utilisent de nombreux scripts, démons et binaires tiers traditionnels. JelinaOS les intègre à une gestion déclarative unifiée dont les champs correspondent aux concepts des services système, pour une prise en main simple et une administration complète.

programs:
myapp:
command: run.sh # Commande de démarrage
running: true # État d’exécution
restart: always # Politique de redémarrage
environment: # Variables d’environnement
MODE: production
working_directory: . # Répertoire de travail
user: root # Utilisateur d’exécution
pid_file: /var/run/myapp.pid
Champ Fonction Description
command Commande de démarrage Obligatoire, point d’entrée du programme
running Exécution activée true par défaut
restart Stratégie de redémarrage no / on-success / on-failure / on-abnormal / on-watchdog / on-abort / always
environment Variables d’environnement Paires clé-valeur
kill_signal Signal d’arrêt Signal envoyé pour arrêter le programme
working_directory Répertoire de travail Répertoire d’exécution
type Type de service simple / forking / oneshot / dbus / notify / idle
user / group Identité Utilisateur et groupe d’exécution
pid_file Fichier PID Enregistrement de l’identifiant du processus
wants / requires Dépendances Faibles / fortes
before / after Ordre de démarrage Avant / après le service désigné
conflicts Exclusion mutuelle Incompatibilité d’exécution avec le service désigné
start_limit_interval_sec / start_limit_burst Limite de redémarrage Nombre maximal de redémarrages dans une fenêtre donnée
start_limit_action Action au dépassement none / reboot / poweroff, etc.
remain_after_exit Maintien après sortie Empêche un démarrage répété
exec_start_pre / exec_start_post Commandes préalables et finales Commandes avant / après démarrage

ProgramSet prend également en charge des paramètres avancés d’unité système, notamment les dépendances de démarrage et les conditions :

programs:
myapp:
command: run.sh
restart: always
Install:
WantedBy: multi-user.target # Démarrage automatique
Unit:
ConditionPathExists: /data/app/config.json # Vérification des conditions
version: "2.4"
services:
# Applications conteneurisées
web:
image: myweb:1.0.0
restart: always
programs:
# Programme d’acquisition traditionnel
collector:
command: collector --config /data/collector.conf
restart: on-failure
after: web

Conteneurs et programmes natifs coopèrent dans la même orchestration, avec des dépendances, un ordre et des stratégies de redémarrage gérés ensemble : c’est une valeur distinctive de la gestion applicative JelinaOS.