デバイスへのアプリケーションデプロイ例
このページでは、JelinaCloud でデバイスのアプリケーションをデプロイする方法を説明します。
以下のスクリーンショットは既存の実製品資料を使用し、設定画面と操作箇所を示しています。画面内のデバイス名、バージョン名、サービス名は例であり、実際のプロジェクトに合わせて入力してください。
デプロイ前に、デバイスへ JelinaOS をインストールし、JelinaCloud のフリートに追加する必要があります。具体的な手順はデバイスの追加を参照してください。
使用するデバイス
Section titled “使用するデバイス”| デバイス | JelinaOS バージョン | Jelinvisor バージョン | カーネルバージョン |
|---|---|---|---|
| I.MX8MP EBC-RS08-A2 | imx8mmebcrs08a2 Debian-10 1.0.4 | 1.0.9 | 5.4.70-g62c07ec2f origin |
基本的な操作フロー
Section titled “基本的な操作フロー”
リリースの公開
Section titled “リリースの公開”デバイスが所属する組織のフリートを開き、[リリース]→[新しいリリース]をクリックします。編集モードを選択し、次へ進んで compose.yml の編集ページを開きます。

編集モードの選択:
開発者モードでは compose 設定を編集できます。非開発者モードではフォームでサービスを設定できます。両モードの画面例を以下に示します。
開発者モードの例
compose.yml 編集ページでアプリケーションサービスの設定を記述します。1 つの compose.yml にコンテナサービスとローカルサービスを同時に記述できますが、ここでは説明をわかりやすくするため、それぞれを分けて紹介します。
コンテナサービスのデプロイ
Section titled “コンテナサービスのデプロイ”必要なイメージは Docker Hub(https://hub.docker.com/search?q=)で検索できます。具体的なデプロイ方法は、各ページのドキュメントを参照してください。
Mysql コンテナサービスを例に説明します。
- 設定ファイルを記述します。

version: 2services: #サービス名 db: # mysql:イメージ名。latest は最新バージョン(省略時は dockerhub から最新イメージを取得)。mysql:5.7 など、特定のバージョンも指定可能 image: mysql:latest #環境変数 environment: # mysql のスーパー管理者ログインパスワード MYSQL_ROOT_PASSWORD: '123456' #ホストとコンテナのポートマッピング ports: - '3306:3306'-
[次へ]→[保存]をクリックして、編集中のリリースを保存します。
-
サービス一覧のファイルアイコンをクリックし、パッケージ化したサービスのプログラムファイルをアップロードします。公開 Image サービスはイメージ名から Docker で取得できるため、ファイルをアップロードする必要はありません。

- アップロードが成功したら、右上の[operation]→[公開]をクリックし、新しいリリースを公開します。
ローカルサービスのデプロイ
Section titled “ローカルサービスのデプロイ”- テスト用の簡単な helloworld.sh スクリプトを作成します。
処理内容:1~100 を順に処理し、数値を 10 で割った余りが 0 の場合に hello world をコンソールへ出力して 10 秒待機します。処理の完了後、デバイス変数 name の値を取得してコンソールに出力します。
#!/bin/bash#1-100 を順に処理し、10 で割った余りが 0 のとき、コンソールへ hello world を出力して 10s 待機for((i=1;i<=100;i++));do if [ $(expr $i % 10) == 0 ] then echo "hello world $i" sleep 10done#デバイス変数 name の値(jack に設定済み)を取得し、コンソールへ出力。name はフリート共通変数またはデバイス固有変数画面で設定します。詳細は後述の「デバイス設定とサービス変数」を参照echo "name:$name"記述後、helloworld.sh を helloworld.tar.gz にパッケージ化します。
- 設定ファイルを記述して保存します。
version: 2programs: #サービス名 helloworld: program: helloworld #サービス再起動規則:失敗時に再起動 restart: on-failure #サービス起動コマンド command: /usr/bin/bash helloworld.sh- サービス一覧のファイルアイコンをクリックし、パッケージ化したサービスのプログラムファイルをアップロードします。

- アップロード後、右上の[operation]→[公開]をクリックし、新しいリリースを公開します。
非開発者モード
このモードは非開発者向けに設計されており、基本的なサービス名と起動コマンドを入力するだけでサービス設定を作成できます。操作は次のとおりです。
[データを追加]をクリックし、[–]をダブルクリックして編集状態にし、サービス設定を入力します。
入力後、[次へ]をクリックして保存します。その後のパッケージのアップロードとリリースの公開は、開発者モードと同じです。

デバイスのバージョン指定
Section titled “デバイスのバージョン指定”デフォルトでは、フリートは最新バージョンに自動追従しますが、デバイスの切り替えには約 15 分かかります。すぐに切り替えるには、手動でバージョンを指定できます。
デバイスの概要ページで、右上の[operation]→[バージョンを指定]をクリックします。ダイアログで先ほど公開したバージョンを選択し、[バージョンを指定]をクリックします。
アプリケーションのデプロイ状態の確認
Section titled “アプリケーションのデプロイ状態の確認”注意:デバイスがネットワークに接続され、正常に通信している必要があります。
JelinaCloud の画面で確認
Section titled “JelinaCloud の画面で確認”サービスが起動すると、デバイスダッシュボードのサービス一覧で現在の稼働状態を確認できます。

代表的な状態は次の 4 つです。
- Running:実行中。
- Failed:サービスの実行に失敗。
- Restarting:サービスを再起動中。
- Exited:サービスが終了。
デバイス側で確認
Section titled “デバイス側で確認”- JelinaCloud のデバイス詳細ページからリモートアクセスで SSH ターミナルを開くか、既存の SSH クライアントでデバイスに接続します。

コンテナのデプロイ状態の確認
Section titled “コンテナのデプロイ状態の確認”接続後、コンソールで docker ps を実行し、現在動作しているコンテナサービスを確認します。
対象コンテナが一覧にあり、STATUS が Up であることを確認してください。表示されない場合は、目標の Release、イメージのダウンロード状態、コンテナログを確認して調査します。
コンテナ名は「サービス名 _ イメージ ID _ リリース ID _ リリース Commit」という形式で指定されています。
この例の db サービスがコンテナ一覧で実行中であることを確認します。
ローカルサービスのデプロイ状態の確認
Section titled “ローカルサービスのデプロイ状態の確認”journalctl -u jelina-jelinvisor -f でデバイスログを表示し、アプリケーションの現在の実行状態を確認できます。
デバイスエージェントのログでサービスの起動・終了記録を確認し、クラウドダッシュボードのサービス状態と照合します。
デバイスは周期的に状態を報告します。現在の報告周期と実際のサービス状態に基づいて、対象サービスが正常に動作していることを確認してください。
サービスの動作確認
Section titled “サービスの動作確認”MySQL コンテナサービスの動作確認
Section titled “MySQL コンテナサービスの動作確認”Navicat を開き、デバイスにデプロイした mysql アプリケーションへのリモート接続を試します。アドレス、管理者アカウント、compose.yml に設定した mysql 管理者パスワード、ポートを入力します。
| 接続項目 | この例の設定 |
|---|---|
| アドレス | アクセス可能なデバイスの IP アドレス |
| ポート | compose でマッピングしたホスト側ポート。この例では 3306 |
| ユーザー名 | root、または作成済みの業務用ユーザー |
| パスワード | 現在のアプリケーション設定のデータベースパスワード |
[接続をテスト]をクリックし、成功が表示されれば、アプリケーションが正常にデプロイされ、接続して利用できることを確認できます。
また、JelinaCloud のデバイス専用変数またはフリート共有変数で、mysql の利用アカウントなど、その他の環境設定を指定することもできます。
ローカルサービス helloworld スクリプトの動作確認
Section titled “ローカルサービス helloworld スクリプトの動作確認”ローカルサービスの実行後、JelinaCloud のデバイスダッシュボードのログやリモートコンソールの出力で、helloworld の情報を確認できます。
JelinaCloud デバイスダッシュボード:

リモートコンソール:
以下は、このスクリプトの出力例です。数値は実行の進行状況によって変わります。
hello world 10hello world 20...name:jackスクリプトの終了時に name:jack が出力されると、サービスに設定された変数 name を読み取れたことを示します。期待する値が出力されない場合は、変数の適用範囲と実際の値を確認してください。
デバイス設定とサービス変数について
Section titled “デバイス設定とサービス変数について”優先順位:デバイス設定 > フリート設定
- フリート設定:デフォルトでは、フリート内のすべてのデバイスに適用されます。

適用対象デバイスは、現在のフリート内でこの設定に従って動作するデバイスを示します。
- デバイス設定:フリート内の個別デバイスに、独自の設定変数値を指定できます。

サービス変数
Section titled “サービス変数”-
フリートの共有サービス変数:デフォルトでは、フリート内の全デバイスのサービス環境変数に適用されます。
例えば、共有サービス変数で全サービスに a、b、name の 3 変数を設定すると、フリート内のすべてのデバイスでそれらの変数が使用されます。

特定のイメージサービスを選択して環境変数を設定することもできます。

-
デバイスの専用サービス変数:個々のデバイスに独自のサービス環境変数を設定できます。操作ページの[override]でフリート変数の値を上書きし、そのデバイス固有の値を使用できます。
例えば、[override]でフリート変数 name、a、b を設定し直すと、その値は対象デバイスにのみ適用され、他のデバイスには影響しません。

その他の注意事項
Section titled “その他の注意事項”-
デバイスは、現在のリリースに含まれるサービスのみを実行します。
-
フリート共有変数またはデバイス専用変数を変更すると、デバイス上で実行中のサービスが再起動されます。
-
ローカルサービスは実行終了後、状態が
Exitedになります。 -
ローカルサービスの再起動ポリシーは、デフォルトで
restart: alwaysです。alwaysの場合、サービスが異常終了すると再起動を試みます。一定時間内に再起動が繰り返されると、状態はFailedと判定されます。複数の再起動ポリシーを提供しているため、用途に応じて指定できます。
restart: 選択肢:no,on-success,on-failure,on-abnormal,on-watchdog,on-abort,always、既定値 always-
非公開イメージのコンテナサービスとローカルサービスは、アプリケーションパッケージのアップロードが必要です。アップロードしないと、関連するリリースを公開できません。
-
新しいリリースのローカルサービス名が旧リリースと一致する場合にのみ、旧サービスのデータが保持されます。
-
コンテナサービスのデータを永続化するには、リリース作成時の
compose.ymlでボリュームのマウントを指定してください。パスを指定したマウントには対応していません。 -
コンテナ名は「サービス名 _ イメージ ID _ リリース ID _ リリース Commit」に固定されているため、
compose.ymlのcontainer_nameで再指定することはできません。 -
非開発者モードに比べ、開発者モードではより詳細な設定を記述できます。
-
compose.ymlの Volumes が空の場合は、マウントするボリュームが未指定であることを意味します。通常のコンテナデプロイには影響しません。