跳到內容
返回官網

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 應用程式管理的獨特價值。