Деплой и инфраструктура
Vercel + Railway, Docker, CI/CD
Схема
| Что | Где |
|---|---|
| Next.js приложение | Vercel — https://tessora-task-portal.vercel.app |
| PostgreSQL 16 | Railway |
| Redis 7 (BullMQ) | Railway |
| Файлы | Cloudflare R2 (prod) / MinIO (dev) |
| Safebot-воркер | Railway |
Vercel
- Build:
prisma generate && prisma migrate deploy && next build(изpackage.json),postinstall: prisma generate. - Env-переменные задаются в настройках Vercel.
- Ветка
mainзащищена — merge в main = auto-deploy в production.
Railway
Конфиг railway.json:
{
"build": { "builder": "DOCKERFILE" },
"deploy": {
"startCommand": "sh ./scripts/migrate-on-deploy.sh && node server.js",
"healthcheckPath": "/api/health",
"healthcheckTimeout": 60,
"restartPolicyType": "ON_FAILURE"
}
}scripts/migrate-on-deploy.sh применяет миграции (prisma migrate deploy) перед стартом сервера. Health check — GET /api/health.
Dockerfile
3-stage build:
- deps —
pnpm install; - builder —
prisma generate+next build(standalone); - runner —
node:20-alpine, только standalone-артефакты.
Dev-инфраструктура
docker-compose.yml поднимает локально:
| Сервис | Порт |
|---|---|
| PostgreSQL 16 | 5433 |
| Redis | 6381 |
| MinIO (S3 API / консоль) | 9000 / 9001 |
Процесс релиза
- Ветка от
main→ изменения → PR. - CI: typecheck + E2E — обязательны.
- Review → merge в
main→ auto-deploy. - Каждая фича/фикс — записан в
CHANGELOG.md([Unreleased]).
Прямые push в main запрещены — ветка защищена. Работать только через PR.