Stateless-инвариант
Файловая система runtime-контейнера в Layero эфемерна. Это продуктовая граница платформы, а не временный технический долг — те же ограничения у Vercel / Netlify / Cloudflare Workers.
Что значит «эфемерна»
- При cold start контейнер поднимается из чистого образа. Всё, что предыдущий инстанс записал в локальную FS, пропадает.
- При scale-up платформа поднимает несколько pod'ов параллельно. У каждого своя локальная FS, общего состояния нет, межпроцессный file-locking не работает.
- Запись на диск возможна только в
/tmp(≤ 512 MB). Содержимое/tmpсбрасывается между запросами.
Что НЕ работает
- SQLite с записью — БД переживёт только время жизни инстанса.
node-persist,lowdb,nedbи любые «файловые БД».- Файловые сессии —
express-sessionс FileStore, файловые сессии в Flask, Streamlit с локальным~/.streamlit/session.jsonи т. п. - Запись пользовательских загрузок на диск — файл пропадёт при следующем запросе.
- In-process кеш между запросами для multi-pod деплоев — каждый pod не видит кеш остальных.
Что РАБОТАЕТ
- Read-only SQLite с контентом, зашитым в образ.
- In-process кеш в рамках одного pod'а — пока pod жив, кеш живёт.
- Временные файлы в
/tmpв пределах одного запроса.
Как делать правильно
| Задача | Решение |
|---|---|
| Persistent данные | Внешний managed Postgres (например, YC Managed PostgreSQL). |
| Кеш | Внешний Redis (YC Managed Redis). |
| Загруженные файлы | Внешний S3-совместимый сторадж (Yandex Object Storage). |
| Сессии | JWT в cookie или Redis-store. |
Если ваше приложение обязано иметь локальный диск — вероятно, Layero вам не подойдёт. Платформа не предоставляет persistent volumes ни сейчас, ни в плане.