Перейти к основному содержимому

Когда нужен runtime

Большинство фронтенд-проектов — статика: после npm run build получается папка с HTML/JS/CSS, и её достаточно положить в хранилище. Это самый быстрый и самый дешёвый режим Layero.

Но некоторые приложения нельзя превратить в SPA — им нужен процесс на сервере:

  • SSR Next.js без output: 'export',
  • Node-сервер — Express, NestJS, Fastify и любой другой, слушающий порт,
  • Python-приложение — Django, FastAPI, Flask и любое WSGI/ASGI,
  • Streamlit / Gradio — Python-приложения с веб-интерфейсом.

Для них Layero запускает пользовательский контейнер.

Поддерживаемые пресеты

project_typeЧто это
spaСтатика (по умолчанию).
ssr_nextNext.js с SSR или API-роутами.
node_webЛюбой Node-сервер, слушающий HTTP: Express, Fastify, NestJS, Koa, Hono и другие.
python_webЛюбое WSGI/ASGI-приложение: Django, FastAPI, Flask, Starlette, Litestar и другие.
streamlitStreamlit-приложение (нужен app.py).
gradioGradio-приложение (нужен app.py).

flask — устаревшее имя, оставленное для совместимости: это алиас python_web. Новые проекты получают python_web.

Пресет выбирается в дашборде проекта (Project → Runtime type). Для каждого используется готовый Dockerfile-шаблон — свой образ собирать не нужно.

Что определяется автоматически

Тип угадывается по зависимостям — руками выбирать обычно не нужно.

Python → python_web. Фреймворки: Django, FastAPI, Flask, Starlette, Litestar, Quart, Sanic, BlackSheep, Falcon, Bottle, Pyramid, CherryPy, aiohttp, Tornado. Серверы: Uvicorn, Gunicorn, Hypercorn, Daphne. Точка входа ищется в app.py, main.py или manage.py.

Node → node_web. Express, Fastify, Koa, NestJS, Hapi, Hono, AdonisJS, Restify, Polka, Feathers, Sails, h3, Elysia, json-server.

Если вашего фреймворка в списке нет, но приложение слушает HTTP-порт — оно всё равно запустится: выберите node_web или python_web в настройках проекта вручную. Список нужен для автоопределения, а не для ограничения.

Cold start

Контейнер поднимается по первому запросу, обслуживает трафик и засыпает при простое. Это значит:

  • Разбуженное из «тёплого» состояния приложение отвечает за ~0.2 с, полностью холодный старт — 4–12 с в зависимости от стека (Python быстрее, Streamlit медленнее). Это медианы реальных замеров; таблица по типам приложений и все состояния — в Жизненном цикле.
  • Приложения с регулярным трафиком платформа прогревает автоматически.
  • В простое проект ничего не стоит по compute — за это serverless и любят.

Выделенный keep-warm (гарантированно без холодных стартов) — платная настройка в планах.

Stateless-инвариант

Файловая система контейнера эфемерна — это важное ограничение, которое легко проглядеть. Прочтите Stateless-инвариант прежде чем мигрировать существующее SSR-приложение, использующее SQLite, файловые сессии или локальный кеш.