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>
3.1 KiB
3.1 KiB
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)
cd /Users/sergeyzotov/Documents/GENERATOR_Z51
docker compose up -d --build
docker compose ps
Открыть: http://localhost:5173
Остановить:
docker compose down
2) Прод запуск (nginx + docker)
- Подготовь env:
cd /Users/sergeyzotov/Documents/GENERATOR_Z51
cp .env.prod.example .env
- Запусти:
docker compose -f docker-compose.prod.yml up -d --build
- Проверка:
docker compose -f docker-compose.prod.yml ps
Открыть: http://<VPS_IP> (или домен, если DNS уже настроен).
Остановить:
docker compose -f docker-compose.prod.yml down
3) Как работает генерация HTML
- В конструкторе собирается PUG.
- Нажимаешь
Превью -> Обновить. - Builder вызывает
POST /api/project/:name/render-email. - Запрос уходит в
email-gen-api. email-gen-api:- пишет PUG в
email-gen/emails/<project>/letters/let.pug - запускает
gulp pug --project <project> - читает
email-gen/public/index.html - возвращает HTML обратно в конструктор.
- пишет PUG в
Важно: в Настройки -> Текущий проект заполняй поле Папка проекта в email-gen (например numizmat).
4) Обновление email-gen без ручной пересборки всего
Скрипт:
./deploy/scripts/update-email-gen.sh
Или с веткой:
./deploy/scripts/update-email-gen.sh main
Что делает скрипт:
git fetch/git pull --ff-onlyвemail-gen- пересобирает и перезапускает только
email-gen-apiконтейнер
Это удобно, если email-gen обновляется через git и перезаписывается.
5) Логи
Prod:
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:
docker compose logs -f builder
docker compose logs -f email-gen-api
6) Данные
- Данные конструктора:
z51-pug-builder/data - Репозиторий генератора:
email-gen(bind mount в контейнер)
Оба каталога остаются на хосте и не теряются при пересоздании контейнеров.