コンテンツにスキップ
JelinaJelina Documentation技術ドキュメント
公式サイトに戻る

docker-compose の互換性と拡張

JelinaOS は、すぐに使えるコンテナオーケストレーションを提供します。docker-compose 2.x の構文に完全対応し、クラウドのリリースまたはローカル API で構成して、エージェントが自動デプロイします。さらに、非コンテナアプリケーション(ProgramSet)の宣言的管理を拡張し、従来型プログラムも設定によって管理できるようにしています。

構成ファイルは宣言的な設定です。クラウドの Release またはローカル API で定義し、エージェントが同期して自動デプロイします。デバイスには単一コンテナの日常操作用に Docker コマンドがありますが、複数サービスの構成はエージェントが一元実行するため、追加のオーケストレーションツールを入れる必要はありません。

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 # 条件確認

例:混在するアプリケーションの構成

Section titled “例:混在するアプリケーションの構成”
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 のアプリケーション管理の特長です。