a715503ca5
- TZ.md: хостинг (Vercel), стек (актуальные версии Next.js 16/NestJS 11/Prisma 7/pnpm 10/Tailwind 4), раздел 12.2 с командой деплоя, закрыты ОВ-02 и ОВ-06 - SPRINTS.md: в Sprint 2 — ссылка на production URL; Sprint 12 — уточнены задачи деплоя - docs/DEPLOY.md: новый файл — инструкция по деплою фронтенда, локальной разработке, план автодеплоя через Gitea Actions, варианты хостинга бэкенда Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
157 lines
4.7 KiB
Markdown
157 lines
4.7 KiB
Markdown
# Деплой — oclinica-brandbook
|
|
|
|
## Текущее состояние
|
|
|
|
| Сервис | Статус | URL | Платформа |
|
|
|------------|-------------|----------------------------------------|---------------|
|
|
| Фронтенд | ✅ Активен | https://web-oclinica.vercel.app | Vercel Hobby |
|
|
| Бэкенд | локально | http://localhost:3001 | Docker Compose |
|
|
| База данных | локально | localhost:5433 | PostgreSQL 16 |
|
|
|
|
---
|
|
|
|
## Фронтенд — Vercel
|
|
|
|
### Первоначальная настройка (уже выполнена)
|
|
|
|
```bash
|
|
# 1. Установить Vercel CLI
|
|
npm install -g vercel
|
|
|
|
# 2. Войти в аккаунт (однократно, открывает браузер)
|
|
vercel login
|
|
|
|
# 3. Первый деплой из директории apps/web
|
|
cd apps/web
|
|
vercel --yes
|
|
```
|
|
|
|
### Деплой обновлений
|
|
|
|
```bash
|
|
cd apps/web
|
|
vercel --prod --yes
|
|
```
|
|
|
|
Деплой занимает ~30 секунд. После завершения изменения сразу доступны по адресу:
|
|
**https://web-oclinica.vercel.app**
|
|
|
|
### Как это работает
|
|
|
|
- Vercel автоматически определяет Next.js и использует pnpm для сборки
|
|
- Каждый `vercel --prod` создаёт новый immutable deployment и привязывает его к production URL
|
|
- Предыдущие деплои остаются доступны по уникальным preview URL
|
|
- Логи билда: https://vercel.com/oclinica/web
|
|
|
|
### Ограничения Vercel Hobby (бесплатный план)
|
|
|
|
| Параметр | Лимит |
|
|
|-----------------------|-------------------------|
|
|
| Bandwidth | 100 GB / месяц |
|
|
| Builds | 6000 минут / месяц |
|
|
| Serverless Functions | 100 GB-hours / месяц |
|
|
| Тип использования | Только некоммерческие |
|
|
|
|
Для брендбука (внутренний инструмент) лимитов более чем достаточно.
|
|
|
|
---
|
|
|
|
## Локальная разработка
|
|
|
|
### Запуск фронтенда
|
|
|
|
```bash
|
|
# Из корня monorepo
|
|
pnpm dev
|
|
|
|
# Или только фронтенд
|
|
cd apps/web && pnpm dev
|
|
```
|
|
|
|
Доступен на: http://localhost:3001
|
|
|
|
### Запуск бэкенда + БД
|
|
|
|
```bash
|
|
# Запустить PostgreSQL
|
|
docker compose up -d
|
|
|
|
# Запустить NestJS
|
|
cd apps/api && pnpm dev
|
|
```
|
|
|
|
### .env файлы
|
|
|
|
```bash
|
|
# Скопировать и заполнить
|
|
cp .env.example .env
|
|
```
|
|
|
|
Содержимое `.env.example`:
|
|
```
|
|
DATABASE_URL="postgresql://brandbook:brandbook@localhost:5433/brandbook"
|
|
API_PORT=3001
|
|
NEXT_PUBLIC_API_URL=http://localhost:3001
|
|
```
|
|
|
|
---
|
|
|
|
## Автодеплой через Gitea Actions (планируется в Sprint 12)
|
|
|
|
Для автоматического деплоя при пуше в ветку `main` создать файл
|
|
`.gitea/workflows/deploy-frontend.yml`:
|
|
|
|
```yaml
|
|
name: Deploy Frontend to Vercel
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'apps/web/**'
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'pnpm'
|
|
cache-dependency-path: apps/web/pnpm-lock.yaml
|
|
|
|
- name: Install Vercel CLI
|
|
run: npm install -g vercel
|
|
|
|
- name: Deploy to Vercel
|
|
run: cd apps/web && vercel --prod --yes --token ${{ secrets.VERCEL_TOKEN }}
|
|
```
|
|
|
|
**Настройка:**
|
|
1. Получить Vercel Token: https://vercel.com/account/tokens
|
|
2. Добавить в Gitea: Settings → Secrets → `VERCEL_TOKEN`
|
|
|
|
---
|
|
|
|
## Хостинг бэкенда (планируется к Sprint 11)
|
|
|
|
Бэкенд (NestJS + PostgreSQL) потребуется для экспериментальной секции (Sprint 11).
|
|
Варианты для рассмотрения:
|
|
|
|
| Платформа | PostgreSQL | Бесплатно | Карта |
|
|
|-----------|-----------|-----------|-------|
|
|
| Railway | ✅ | $5 кредит / месяц | нужна |
|
|
| Supabase | ✅ | ✅ (PostgreSQL managed) | нет |
|
|
| Fly.io | ✅ | ✅ ограниченно | нет |
|
|
| VPS клиники | ✅ | ✅ (если есть) | нет |
|
|
|
|
Рекомендация: **Supabase** для БД (бесплатно, managed PostgreSQL) + **Railway** или VPS для NestJS.
|