Ir al contenido
JelinaJelina DocumentationDocumentación técnica
Volver al sitio oficial

Compatibilidad y extensiones de docker-compose

JelinaOS incluye orquestación de contenedores lista para utilizar, con compatibilidad completa con la sintaxis docker-compose 2.x. La configuración se administra mediante versiones en la nube o interfaces locales, y el agente la implementa automáticamente. Además, amplía este modelo con administración declarativa de aplicaciones sin contenedores (ProgramSet) para gestionar también programas tradicionales mediante configuración.

El archivo de orquestación es una configuración declarativa definida en una Release de la nube o mediante la interfaz de administración local. El agente la sincroniza y la implementa automáticamente. Los comandos de Docker del dispositivo permiten operaciones cotidianas sobre contenedores individuales; el agente ejecuta la orquestación de varios servicios sin instalar herramientas adicionales.

La implementación se basa en la especificación 2.x para facilitar la migración de archivos habituales:

  • Admite definiciones de servicios, redes, volúmenes, variables de entorno, dependencias y otras opciones comunes;
  • Es compatible con los campos y comportamientos introducidos en 2.x;
  • Los campos nuevos de 3.x no están admitidos; utiliza sintaxis 2.x al migrar.
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

Aplicaciones sin contenedores: administración declarativa con ProgramSet

Sección titulada «Aplicaciones sin contenedores: administración declarativa con ProgramSet»

Las instalaciones industriales utilizan numerosos scripts, demonios y binarios de terceros. JelinaOS los integra en una administración declarativa unificada cuyos campos corresponden directamente a la semántica de los servicios del sistema, con una curva de aprendizaje reducida y amplias funciones de gestión.

programs:
myapp:
command: run.sh # Comando de inicio
running: true # Indica si debe ejecutarse
restart: always # Política de reinicio
environment: # Variables de entorno
MODE: production
working_directory: . # Directorio de trabajo
user: root # Usuario de ejecución
pid_file: /var/run/myapp.pid
Campo Semántica Descripción
command Comando de inicio Obligatorio; punto de entrada del programa
running Ejecutar o no Valor predeterminado true
restart Política de reinicio no / on-success / on-failure / on-abnormal / on-watchdog / on-abort / always
environment Variables de entorno Pares de clave y valor
kill_signal Señal de parada Señal enviada al detener el programa
working_directory Directorio de trabajo Directorio de ejecución
type Tipo de servicio simple / forking / oneshot / dbus / notify / idle
user / group Identidad de ejecución Usuario o grupo con el que se ejecuta
pid_file Archivo PID Registra el identificador del proceso
wants / requires Dependencias Dependencias débiles o fuertes
before / after Orden de inicio Inicio antes o después del servicio indicado
conflicts Exclusión mutua Incompatibilidad con el servicio indicado
start_limit_interval_sec / start_limit_burst Límite de reinicios Máximo de reinicios dentro de un intervalo
start_limit_action Acción al superar el límite none, reboot, poweroff, etc.
remain_after_exit Mantener el estado tras la salida Evita inicios repetidos
exec_start_pre / exec_start_post Comandos previos y posteriores Comandos ejecutados antes o después del inicio

ProgramSet admite también configuración avanzada a nivel de unidad, como dependencias de arranque y condiciones:

programs:
myapp:
command: run.sh
restart: always
Install:
WantedBy: multi-user.target # Iniciar al arrancar
Unit:
ConditionPathExists: /data/app/config.json # Comprobación de condición
version: "2.4"
services:
# Carga de trabajo en contenedor
web:
image: myweb:1.0.0
restart: always
programs:
# Programa de adquisición tradicional
collector:
command: collector --config /data/collector.conf
restart: on-failure
after: web

Las aplicaciones en contenedores y los programas nativos trabajan en el mismo sistema de orquestación, con dependencias, orden de inicio y políticas de reinicio administrados de forma unificada. Esta es una de las capacidades distintivas de JelinaOS.