- Jelina overview
- JelinaOS
- Reference materials
docker-compose compatibility and extensions
JelinaOS provides ready-to-use container orchestration with full docker-compose 2.x syntax compatibility. Orchestration is managed through cloud releases or local management interfaces and deployed automatically by the device agent. It also adds declarative management of non-containerized applications through ProgramSet, bringing configuration-driven management to traditional programs.
How orchestration executes
Section titled “How orchestration executes”Orchestration files are declarative configurations defined in a cloud Release or through a local management interface. The device agent synchronizes and deploys them automatically. Local Docker commands support routine operations on individual containers; multi-service orchestration is executed centrally by the device agent without additional orchestration tools on the device.
Compose compatibility
Section titled “Compose compatibility”JelinaOS implements the 2.x specification to support smooth migration of common orchestration files:
- Supports common settings for services, networks, volumes, environment variables, and dependencies.
- Compatible with fields and behavior introduced in 2.x.
- Fields added in 3.x are not supported; use 2.x syntax when migrating.
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: - appNon-containerized applications: declarative ProgramSet management
Section titled “Non-containerized applications: declarative ProgramSet management”Industrial sites run many traditional scripts, daemons, and third-party binaries. JelinaOS brings them into a unified declarative management system whose fields map directly to system service semantics, keeping it easy to learn while providing strong management capabilities.
Basic example
Section titled “Basic example”programs: myapp: command: run.sh # Startup command running: true # Whether to run restart: always # Restart policy environment: # Environment variables MODE: production working_directory: . # Working directory user: root # Run as user pid_file: /var/run/myapp.pidSupported configuration fields
Section titled “Supported configuration fields”| Field | Meaning | Description |
|---|---|---|
command |
Startup command | Required program entry point |
running |
Whether to run | Defaults to true |
restart |
Restart policy | no / on-success / on-failure / on-abnormal / on-watchdog / on-abort / always |
environment |
Environment variables | Key-value pairs |
kill_signal |
Stop signal | Signal sent when stopping the program |
working_directory |
Working directory | Directory in which the program runs |
type |
Service type | simple / forking / oneshot / dbus / notify / idle |
user / group |
Execution identity | Run as the specified user/group |
pid_file |
PID file | Records the process PID |
wants / requires |
Dependencies | Weak / strong dependencies |
before / after |
Startup ordering | Start before/after the specified service |
conflicts |
Mutual exclusion | Conflicts with the specified service |
start_limit_interval_sec / start_limit_burst |
Restart limits | Maximum restarts within a time window |
start_limit_action |
Limit action | none / reboot / poweroff, etc. |
remain_after_exit |
Remain active after exit | Prevents repeated startup |
exec_start_pre / exec_start_post |
Pre/post commands | Commands executed before/after startup |
Service unit extensions
Section titled “Service unit extensions”ProgramSet also supports advanced system unit configuration, such as boot dependencies and condition checks:
programs: myapp: command: run.sh restart: always Install: WantedBy: multi-user.target # Start at boot Unit: ConditionPathExists: /data/app/config.json # Condition checkExample: mixed orchestration
Section titled “Example: mixed orchestration”version: "2.4"
services: # Containerized workload web: image: myweb:1.0.0 restart: always
programs: # Traditional acquisition program collector: command: collector --config /data/collector.conf restart: on-failure after: webContainerized applications and native programs work within one orchestration system, with unified dependencies, startup order, and restart policies—a distinctive benefit of JelinaOS application management.