Browse Source
- 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>sprint/3
3 changed files with 202 additions and 25 deletions
@ -0,0 +1,156 @@ |
|||||||
|
# Деплой — 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. |
||||||
Loading…
Reference in new issue