# 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 в контейнер)

Оба каталога остаются на хосте и не теряются при пересоздании контейнеров.
