Armadilloフォーラム

app.confでマウントしたファイルをmain.shで参照する方法を知りたい

ryo_sakura

2025年3月24日 11時37分

シェルスクリプトのコンテナアプリケーションでG4の/var/app/rollback/volumes/aaa(aaaは自身で作成したフォルダ)内に設置したファイルを参照したいと考えております。

app.confにて
add_volumes /var/app/rollback/volumes/aaa:/vol_app:ro
と記載し、

main.shで
gateway_ini="/vol_app/gateway.ini"
. <(grep -v -E '\[.*\]' ${gateway_ini})
と記載しましたが、

ログにてgrep: /vol_app/gateway.ini: No such file or directoryと出力されてしまいます。

正しいファイル参照の仕方をご教授いただきたいです、よろしくお願いいたします。

==========
製品型番:
Debian/ABOSバージョン:
カーネルバージョン:
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

コメント

以下表現を修正いたします。
> シェルスクリプトのコンテナアプリケーションでG4の/var/app/rollback/volumes/aaa(aaaは自身で作成したフォルダ)内に設置したファイルを参照したいと考えております。
→シェルスクリプトのコンテナアプリケーションでG4の/var/app/rollback/volumes/aaa内に設置したgateway.iniファイルを参照したいと考えております。(aaaフォルダとgateway.iniファイルは自身で作成したもの)

at_satoshi.ohta

2025年3月24日 12時10分

太田です。

aaa は自身で作成したディレクトリなんですね。申し訳ありません。すれ違いになり見逃してました。
気になる点としては、app.confのデフォルトでは、

add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app:ro

があり、ABOS上では、「/var/app/rollback/volumes/プロジェクト名/src」のディレクトリに main.sh があります。
また、コンテナ内では 「/var/app/rollback/volumes/プロジェクト名」をマウントしているため、「/vol_app/src/main.sh」に main.sh があります。

main.sh はどこに配置していますでしょうか?

at_satoshi.ohta

2025年3月24日 11時47分

太田です。

こちら、
> gateway_ini="/vol_app/gateway.ini"
ではなく、
gateway_ini="/vol_app/src/gateway.ini"

にすると、どうなりますでしょうか?

at_satoshi.ohta

2025年3月24日 12時12分

太田です。

> 太田です。
>
> こちら、
> > gateway_ini="/vol_app/gateway.ini"
> ではなく、
> gateway_ini="/vol_app/src/gateway.ini"
>
> にすると、どうなりますでしょうか?

申し訳ありません。こちらは無視してください。

ご返信いただきありがとうございます。
上記実行した結果、
grep: /vol_app/src/gateway.ini: No such file or directory
と出力されました。
マウントがうなくいってないのでしょうか?

at_satoshi.ohta

2025年3月24日 13時23分

太田です。

状況確認のため、以下を教えていただければ幸いです。

1. ATDE上のプロジェクトディレクトリにおいて aaa ディレクトリはどこに配置していますでしょうか?
app ディレクトリ以外に配置している場合、デフォルトでは SWU イメージをインストールしても Armadillo に aaa ディレクトリは配置されません。

2. app.conf の中身はどのようになっていますでしょうか?
例えば、

add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app:ro
add_volumes /var/app/rollback/volumes/aaa:/vol_app:ro

のように /vol_app に2回マウントするように記述されている場合は2回目の /vol_app へのマウントが失敗して aaa ディレクトリはコンテナにマウントされないはずです。

3. そもそも /var/app/rollback/volumes/aaa が Armadillo に存在していますでしょうか?
シリアルコンソールか ssh を使用してご確認いただければと思います。

お手数ですが、よろしくお願いいたします。

> 1. ATDE上のプロジェクトディレクトリにおいて aaa ディレクトリはどこに配置していますでしょうか?
> app ディレクトリ以外に配置している場合、デフォルトでは SWU イメージをインストールしても Armadillo に aaa ディレクトリは配置されません。
→ATDE上のプロジェクトディレクトリとは、仮想環境上でのプロジェクトディレクトリということでしょうか?
もしそうであればaaa ディレクトリは配置していない状態です。

> 2. app.conf の中身はどのようになっていますでしょうか?
> 例えば、
>

> add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app:ro
> add_volumes /var/app/rollback/volumes/aaa:/vol_app:ro
> 

> のように /vol_app に2回マウントするように記述されている場合は2回目の /vol_app へのマウントが失敗して aaa ディレクトリはコンテナにマウントされないはずです。
→上記のように/vol_app に2回マウントしている状態です。

> 3. そもそも /var/app/rollback/volumes/aaa が Armadillo に存在していますでしょうか?
> シリアルコンソールか ssh を使用してご確認いただければと思います。
→/var/app/rollback/volumes/aaaはArmadilloに存在しています。

状況は上記の通りです、ご確認をお願いいたします。

at_satoshi.ohta

2025年3月24日 13時55分

太田です。

> →ATDE上のプロジェクトディレクトリとは、仮想環境上でのプロジェクトディレクトリということでしょうか?

そうですね。ATDEにおいて、ABOSDEで[CREATE NEW PROJECT] > [G4/X2] > [Shell New Project] からプロジェクトディレクトリを作成したと思います。
作成したプロジェクトディレクトリをmy_project という名前だとすると、my_project/app下に aaa ディレクトリを作成している状況なのかどうか気になりました。
aaa ディレクトリは my_project/app 内に配置しておらず、Armadillo には /var/app/rollback/volumes/aaa が存在するということは、config/app.desc に swdesc_files コマンドを使用して aaa ディレクトリを /var/app/rollback/volumes に配置するように記述していると想像しています。

> →上記のように/vol_app に2回マウントしている状態です。

これが原因のように思われます。
aaa ディレクトリを /vol_app にマウントせずに、例えば、

add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app:ro
add_volumes /var/app/rollback/volumes/aaa:/aaa:ro

のようにして、
main.shで

gateway_ini="/aaa/gateway.ini"

とすればどうなりますでしょうか?

返信遅れてしまい申し訳ございません。

上記の方法で無事解決いたしました。
ご対応いただきありがとうございました。