Node.js
Деплой сервера на Node.js: Express, Fastify, NestJS.
Как Railpack определяет приложение
Приложение распознаётся по package.json в корне (или в пути сборки).
Менеджер пакетов определяется так:
- Поле
packageManagerвpackage.json(версия ставится через Corepack). - Lock-файл:
pnpm-lock.yaml,bun.lock/bun.lockb,yarn.lock,.yarnrc.yml. - По умолчанию — npm.
Команда запуска выбирается так:
- Скрипт
startвpackage.json. - Поле
mainвpackage.json. - Файл
index.jsилиindex.tsв корне.
Если есть скрипт build, он выполняется при сборке.
Порт
Слушайте порт из переменной PORT на всех интерфейсах:
const port = Number(process.env.PORT ?? 3000);
app.listen(port, '0.0.0.0');Добавьте приложению переменную PORT со значением порта контейнера из домена
(по умолчанию 3000).
Версия Node.js
Берётся из (по приоритету): переменной RAILPACK_NODE_VERSION, engines.node в package.json,
.nvmrc, .node-version, mise.toml или .tool-versions. По умолчанию — 22.
Для Bun версия задаётся RAILPACK_BUN_VERSION или файлом .bun-version.
Монорепозитории
Railpack поддерживает workspaces npm, yarn, bun и pnpm (pnpm-workspace.yaml), а также Nx.
- Если нужен конкретный пакет, задайте скрипты
buildиstartв корневомpackage.jsonили переопределите команды в настройках «Сборка и запуск». - В Nx с несколькими приложениями укажите переменную
RAILPACK_NX_APP(например,webилиapps/web).
Полезные переменные Railpack
| Переменная | Что делает |
|---|---|
RAILPACK_NODE_VERSION | Версия Node.js |
RAILPACK_PRUNE_DEPS | Удалить dev-зависимости из итогового образа |
RAILPACK_NODE_INSTALL_PATTERNS | Доп. файлы, нужные для установки зависимостей (например, prisma) |
RAILPACK_NODE_PLAYWRIGHT_INSTALL | Установить браузеры Playwright |
При запуске выставляются NODE_ENV=production и CI=true.
Частые проблемы
Приложение слушает не тот порт или только localhost. См. раздел «Порт» выше.
Railpack распознал SPA (Vite, Astro и т. п.). В настройках «Сборка и запуск» выберите результат сборки Веб-сервис или укажите команду запуска.