はじめに
Modalを使っているときに共有ボリュームに入れたデータをコード上から利用しようとしたときに行き詰ったのでそのリファレンス
以下、パスの表現はLinux上で表現するものとする
Secretsについて
起動前の環境変数等を設定できるやつ
設定しておくと、ローカルとリモートでパスの違いなどをほぞできる (今回の記事のやつ)
SharedVolume について
コード上で設定する下記のものについて、
SHARED_VOLUME_NAME = 'sharedvolumename'
CACHE_PATH = '/cache'
shared_volumes={CACHE_PATH: modal.SharedVolume().persist(SHARED_VOLUME_NAME)}
ここでこのように設定した場合は、CACHE_PATH
がルートディレクトリに設定されるため、相対パスを入力した場合はこれが最初につくようになる。そのため、
modal volume put [shared-volume-name] [localPath] [remote path]
でファイルを送信する場合、remote path に相対パスを入れると、/cache/path...
になることに注意
また、リモートパスでパスの区切りは'/'で統一する。しない場合はパスが名前としてすべて同じ場所に保存される。
最重要
加えて、移動できたかどうかは以下のコマンドで確認することができるが、
modal volume ls [shared-volume-name] '/'
このように入力した場合は、一見Linuxのルート
から表示していると思われるが、実際はCACHE_PATHで設定したパスをルートとして表示している。
プログラム内からファイルにアクセス
プログラム内でファイルに絶対パスでアクセスする場合は、Linuxルートディレクトリから表記する必要がある。
そのため、最重要のところで指定したパスでアクセスしようとすると、ファイルが見つからない。
実際にアクセスするためには、CACHE_PATH
+ ファイルの場所となる。