結論:アプリは問題なかった—Docker が読み取り専用の ZimaOS ルートに CLI 設定を書き込もうとしていた
Compose スタックは別のマシンですでに動作していました。ZimaOS では mkdir /root/.docker: read-only file system というエラーで失敗しました。DOCKER_CONFIG を書き込み可能な場所に指定することで、実際の問題は解決しました。
一時的にアプリを使う場合は、書き込み可能な Docker 設定パスを指定する
sudo -i
mkdir -p /var/lib/docker/.docker
export DOCKER_CONFIG=/var/lib/docker/.docker
docker compose up -d
実際のケースでこのコマンドが機能したのは、Docker がアプライアンスのルートファイルシステム上に /root/.docker を作成しようとしなくなったためです。Docker は DOCKER_CONFIG 環境変数について、Docker CLI 設定で説明しています。
繰り返し使う ZimaOS アプリでは、Compose ファイルを適切にパッケージ化する
現在の ZimaOS では、実行時設定に通常の Docker Compose を使用し、アプリストアのメタデータにはトップレベルの x-casaos ブロックを使用します。ZimaOS アプリメタデータでは、現在の v2 フィールドを定義しています。
上流の Docker Compose スキーマが、引き続き実行時の正式な基準です。
UI でローカルにアップロードしたイメージを使用できなかった理由
アプリストアのインストールフローでは、アプリ定義を通じて解決できるイメージ参照を想定しています。手動で読み込んだローカルイメージは Docker 内に存在していても、ストアのインストーラーパスでは認識されない場合があります。個人宅で使うアプリなら直接 Compose を使う方が簡単です。配布する場合は、イメージをレジストリに公開するか、適切な ZimaOS アプリパッケージを作成してください。
アプリケーションデータは書き込み可能なストレージに保存する
データベース、アップロードファイル、設定を永続的なホストパスにマッピングしてください。Portainer の要件は、手動で管理する Docker ワークロード向けの代替手段です。
ストアの動作が必要な場合にのみ、ストアのプロトコルを使用する
目的が家族で使う買い物リストアプリを1つ導入することなら、直接 Compose を使えば十分です。アイコン、メタデータ、アップデートを備えたインストール可能なカタログとして配布することが目的なら、現在の ZimaOS v2 アプリストア構成を使用してください。ZimaOS アプリの要件に、デプロイの背景情報が記載されています。
