Skip to content
JelinaJelina DocumentationTechnical documentation
Back to website

Container orchestration (Compose)

When an application consists of multiple services, such as a business service, database, and message queue, an orchestration file centrally declares their definitions, dependencies, and runtime behavior. The device agent handles orchestration execution centrally: configure it in a release and devices deploy automatically, without manual device operations.

Declare orchestration configuration in a Release (services + programs)
│
▼
Device agent synchronizes target state ──▶ Pull images / packages ──▶ Create and start services ──▶ Supervise
│ │
│ ▼
└────────────────────────────────── Version update / rollback ◀────────────────── Restart on failure
  • The device agent handles service startup order and dependencies according to the orchestration declaration.
  • Services restart automatically after abnormal exits and recover automatically after device restarts.
  • Version upgrades and rollbacks are managed through releases and executed automatically by the agent.

The following is a release orchestration configuration. For all supported fields, see docker-compose compatibility and extensions:

version: "2.4"
services:
app:
image: myapp:1.0.0
restart: always
ports:
- "8080:80"
depends_on:
- db
db:
image: postgres:16
volumes:
- dbdata:/var/lib/postgresql/data
programs:
collector:
command: collector --config /data/collector.conf
restart: on-failure
volumes:
dbdata:

Enter the orchestration configuration when creating a release, either in edit mode or by uploading an orchestration file. Upload application packages, including container images and native application packages, in release details. See:

  • Volumes declared in orchestration are independent of the container lifecycle; recreating or upgrading containers does not affect their data.
  • We also recommend mounting critical data on the device’s data partition.
  • Orchestration support is based on the 2.x specification; common orchestration files can be used directly.
  • Fields introduced in 3.x are not supported.
  • For complete field and compatibility details, see docker-compose compatibility and extensions.