Full project: Svelte 5 frontend, Vite 7 backend API, Pug email templates (email-gen), Docker deployment. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
118 lines
3.1 KiB
Markdown
118 lines
3.1 KiB
Markdown
# Docker deploy: z51-pug-builder + email-gen
|
||
|
||
## Что есть
|
||
|
||
- `docker-compose.yml` — локальный/дев запуск (builder на `localhost:5173`)
|
||
- `docker-compose.prod.yml` — прод запуск через nginx
|
||
|
||
Сервисы:
|
||
- `builder` — Svelte-конструктор + локальный API (`/api/*`)
|
||
- `email-gen-api` — мост к `email-gen` (рендер PUG -> HTML)
|
||
- `nginx` (только в prod compose) — входная точка на 80 порту
|
||
|
||
---
|
||
|
||
## 1) Локальный запуск (dev)
|
||
|
||
```bash
|
||
cd /Users/sergeyzotov/Documents/GENERATOR_Z51
|
||
docker compose up -d --build
|
||
docker compose ps
|
||
```
|
||
|
||
Открыть: `http://localhost:5173`
|
||
|
||
Остановить:
|
||
```bash
|
||
docker compose down
|
||
```
|
||
|
||
---
|
||
|
||
## 2) Прод запуск (nginx + docker)
|
||
|
||
1. Подготовь env:
|
||
```bash
|
||
cd /Users/sergeyzotov/Documents/GENERATOR_Z51
|
||
cp .env.prod.example .env
|
||
```
|
||
|
||
2. Запусти:
|
||
```bash
|
||
docker compose -f docker-compose.prod.yml up -d --build
|
||
```
|
||
|
||
3. Проверка:
|
||
```bash
|
||
docker compose -f docker-compose.prod.yml ps
|
||
```
|
||
|
||
Открыть: `http://<VPS_IP>` (или домен, если DNS уже настроен).
|
||
|
||
Остановить:
|
||
```bash
|
||
docker compose -f docker-compose.prod.yml down
|
||
```
|
||
|
||
---
|
||
|
||
## 3) Как работает генерация HTML
|
||
|
||
1. В конструкторе собирается PUG.
|
||
2. Нажимаешь `Превью -> Обновить`.
|
||
3. Builder вызывает `POST /api/project/:name/render-email`.
|
||
4. Запрос уходит в `email-gen-api`.
|
||
5. `email-gen-api`:
|
||
- пишет PUG в `email-gen/emails/<project>/letters/let.pug`
|
||
- запускает `gulp pug --project <project>`
|
||
- читает `email-gen/public/index.html`
|
||
- возвращает HTML обратно в конструктор.
|
||
|
||
Важно: в `Настройки -> Текущий проект` заполняй поле `Папка проекта в email-gen` (например `numizmat`).
|
||
|
||
---
|
||
|
||
## 4) Обновление email-gen без ручной пересборки всего
|
||
|
||
Скрипт:
|
||
```bash
|
||
./deploy/scripts/update-email-gen.sh
|
||
```
|
||
|
||
Или с веткой:
|
||
```bash
|
||
./deploy/scripts/update-email-gen.sh main
|
||
```
|
||
|
||
Что делает скрипт:
|
||
- `git fetch`/`git pull --ff-only` в `email-gen`
|
||
- пересобирает и перезапускает только `email-gen-api` контейнер
|
||
|
||
Это удобно, если `email-gen` обновляется через git и перезаписывается.
|
||
|
||
---
|
||
|
||
## 5) Логи
|
||
|
||
Prod:
|
||
```bash
|
||
docker compose -f docker-compose.prod.yml logs -f nginx
|
||
docker compose -f docker-compose.prod.yml logs -f builder
|
||
docker compose -f docker-compose.prod.yml logs -f email-gen-api
|
||
```
|
||
|
||
Dev:
|
||
```bash
|
||
docker compose logs -f builder
|
||
docker compose logs -f email-gen-api
|
||
```
|
||
|
||
---
|
||
|
||
## 6) Данные
|
||
|
||
- Данные конструктора: `z51-pug-builder/data`
|
||
- Репозиторий генератора: `email-gen` (bind mount в контейнер)
|
||
|
||
Оба каталога остаются на хосте и не теряются при пересоздании контейнеров.
|