跳转到内容
返回官网

docker-compose 兼容与拓展

JelinaOS 提供开箱即用的容器编排能力:完整兼容 docker-compose 2.x 语法,通过云端发布或本地管理接口统一编排,由设备代理自动部署执行;并在此基础上拓展了非容器应用(ProgramSet)的声明式管理,让传统程序也能享受“配置即管理”的现代体验。

编排文件是声明式配置:在云端发布(Release)或本地管理接口中定义,由设备代理同步后自动部署。设备本地提供 Docker 命令用于单容器的日常操作;多服务编排由设备代理统一执行,无需在设备上安装额外的编排工具。

JelinaOS 的 Compose 支持基于 2.x 规范实现,确保主流编排文件的平滑迁移:

  • 支持服务定义、网络、卷、环境变量、依赖关系等常用配置;
  • 兼容 2.x 版本引入的字段与行为;
  • 3.x 新增的字段不在支持范围内,迁移时请使用 2.x 语法。
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

非容器应用:ProgramSet 声明式管理

Section titled “非容器应用:ProgramSet 声明式管理”

工业现场有大量以传统方式运行的程序:脚本、守护进程、第三方二进制。JelinaOS 将它们纳入统一的声明式管理体系,配置字段与系统服务语义一一对应,学习成本低、管理能力强。

programs:
myapp:
command: run.sh # 启动命令
running: true # 是否运行
restart: always # 重启策略
environment: # 环境变量
MODE: production
working_directory: . # 工作目录
user: root # 运行用户
pid_file: /var/run/myapp.pid
字段 对应语义 说明
command 启动命令 必填,程序入口
running 是否运行 默认 true
restart 重启策略 no / on-success / on-failure / on-abnormal / on-watchdog / on-abort / always
environment 环境变量 键值对形式
kill_signal 停止信号 停止程序时发送的信号
working_directory 工作目录 程序运行目录
type 服务类型 simple / forking / oneshot / dbus / notify / idle
user / group 运行身份 以指定用户/用户组运行
pid_file PID 文件 记录进程 PID
wants / requires 依赖关系 弱依赖 / 强依赖
before / after 启动顺序 在指定服务之前/之后启动
conflicts 互斥关系 与指定服务互斥
start_limit_interval_sec / start_limit_burst 重启限制 限定时间窗内的最大重启次数
start_limit_action 超限动作 none / reboot / poweroff 等
remain_after_exit 退出后保持 防止重复启动
exec_start_pre / exec_start_post 前后置命令 启动前/后执行的命令

ProgramSet 还支持系统单元级的高级配置,例如开机依赖与条件检查:

programs:
myapp:
command: run.sh
restart: always
Install:
WantedBy: multi-user.target # 开机自启
Unit:
ConditionPathExists: /data/app/config.json # 条件检查
version: "2.4"
services:
# 容器化业务
web:
image: myweb:1.0.0
restart: always
programs:
# 传统采集程序
collector:
command: collector --config /data/collector.conf
restart: on-failure
after: web

容器应用与原生程序在同一套编排体系中协同工作,依赖关系、启动顺序、重启策略统一管理——这正是 JelinaOS 应用管理的独特价值。