原因
Zeabur はボリューム作成時、PVC の mountPath をデフォルトで /insforge-storage(ルートディレクトリ)に設定しますが、insforge アプリケーションは実際には /app/backend/insforge-storage にファイルを書き込んでいます。
パスが一致していないため、以下の問題が発生します:
- PVC は
/insforge-storageにマウントされている → 持続性はありますが、アプリはここに書き込みません。 - アプリは
/app/backend/insforge-storageに書き込んでいる → PVC による保護がなく、コンテナ内の単なる一時領域です。
pod が再起動するたびにコンテナのファイルシステムがリセットされ、/app/backend/insforge-storage のデータが消失します。
解決策
事前確認
現在の pod 内の /app/backend/insforge-storage に保持すべきデータがあるか確認してください:
kubectl exec -n <namespace> <pod-name> -- ls -la /app/backend/insforge-storage/
Step 1:データがある場合は PVC にバックアップする
mountPath を変更する前に、pod が稼働している間にデータを現在マウントされている PVC(/insforge-storage)にコピーします:
kubectl exec -n <namespace> <pod-name> -- cp -r /app/backend/insforge-storage/. /insforge-storage/
これによりデータが PVC 内に安全に保存され、mountPath 変更後に正しい場所から取得できるようになります。
Step 2:Deployment の volumeMount mountPath を修正する
該当する Deployment(service-698431469758a4530cd3b774)を見つけ、volumeMounts のパスを以下のように変更します:
mountPath: /insforge-storage
↓
mountPath: /app/backend/insforge-storage
Step 3:再デプロイ(rollout)
変更を適用して pod を再起動させます。新しい pod は PVC を /app/backend/insforge-storage に直接マウントするため、アプリが書き込むデータが正しく永続化されるようになります。