Files
chatballs/docs/dev-task-runtime.md
Andrey 91fab586fa ✨ feat(deploy): сохранить override и постоянные dev-окружения
Сохранить порядок дополнительных Compose-файлов при обновлении и подключать их помощнику на чтение. Добавить проверки override, постоянных каталогов dev-данных и документацию проекта. Явно задать русский язык в тестах русских подписей.
2026-10-01 18:18:58 +03:00

72 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Постоянное dev-окружение задачи
Обычная основная копия сохраняет прежние `./data` и Docker secret volumes.
`CHATBALLS_DEV_DATA_DIR` в `compose.dev.yaml` позволяет разместить PostgreSQL,
Redis и media вне checkout. В production используются прежние именованные тома.
Для worktree используйте `scripts/task-dev.ps1`. Он требует имя окружения,
свободный диапазон из шести портов и абсолютный каталог данных вне всех worktree:
```powershell
./scripts/task-dev.ps1 -Name t-008 -PortBase 18020 -DataDir C:/ChatballsRuntime/t-008
```
Это запуск существующей базы: без `postgres/PG_VERSION` скрипт остановится.
Он также проверяет наличие исходных secret volumes проекта `t-008`.
Имя Compose нельзя менять при переносе данных: оно определяет секреты инстанса.
Для новой реальной установки владелец явно выбирает `-InitializeDatabase`.
Запуск выполнит штатные миграции; владельца и организацию создают через обычный
мастер первого запуска. Скрипт не создаёт пользователей или демонстрационные
данные. Новая установка не является восстановлением старой базы.
Порты: `PortBase` PostgreSQL, `+1` Redis, `+2` backend-app, `+3`
backend-platform, `+4` frontend, `+5` web-chat. Frontend использует свой
`backend-app` внутри того же Compose-проекта. Скрипт проверяет настоящий
`/api/v1/health/ready/` через frontend proxy (БД и Redis).
## Перенос существующих данных
1. Запишите исходное имя Compose и mount paths через `docker inspect`.
2. Остановите все сервисы, которые пишут в PostgreSQL, Redis и media.
3. Сделайте резервную копию и проверьте её; копируйте полный `data`, включая
PostgreSQL WAL и служебные файлы, в постоянный каталог. Исходник сохраняйте.
4. Сохраните прежнее имя Compose и все три исходных secret volumes. Не используйте
`down -v`, не удаляйте тома и не генерируйте новые пароли для существующей базы.
5. Задайте `CHATBALLS_DEV_DATA_DIR` и пересоздайте соответствующие сервисы штатным
Compose. Проверьте mount paths, readiness и существующие данные/вход.
Если исходная база исчезла вместе с worktree, требуется её резервная копия.
Восстановление только исходников из Git не возвращает БД и media. Не направляйте
frontend на другую задачу, чтобы скрыть отсутствие API; общий backend должен
быть явно согласованной зависимостью с устойчивыми исходниками и данными.
`scripts/start.ps1` и `start.sh` предназначены для основной копии, не для
одноразовых worktree. Слияние задачи не должно удалять каталог, используемый
Docker как source mount.
## Действующее общее окружение T-008 (29 сентября 2026)
Frontend T-008 на `http://localhost:5173` явно использует основное окружение:
API `http://host.docker.internal:8010`, исходники backend из основной копии,
её существующие `data/postgres`, `data/redis`, `data/media` и исходные секреты.
Это основная база, а не восстановленная база T-007. Никакие аккаунты и данные
для этого подключения не создавались. Авторизованные экраны требуют обычного
входа существующим пользователем основной базы.
Постоянный override вне worktree:
`C:/Users/drmar/AppData/Roaming/Skaro/runtime/70a06986-4881-4d6d-865c-fa6636fc00b4/T-008/compose.shared.yaml`.
Из worktree T-008 frontend запускается так (без запуска собственного пустого backend):
```powershell
$override = 'C:/Users/drmar/AppData/Roaming/Skaro/runtime/70a06986-4881-4d6d-865c-fa6636fc00b4/T-008/compose.shared.yaml'
$env:INTERNAL_UI_PORT = '5173'
docker compose -p t-008 -f compose.yaml -f compose.dev.yaml -f $override up -d --no-deps --no-build frontend
```
Основной frontend отдельно доступен на 5174; Redis основного dev-окружения
использует host port 16380. При штатном запуске основной копии задайте
`INTERNAL_UI_PORT=5174` и `REDIS_HOST_PORT=16380`. Старый frontend one-off T-008
остановлен и сохранён; его ссылка на порт 18010 ведёт в повреждённый T-007.
Нельзя его запускать одновременно с новым frontend на 5173.