Сохранить порядок дополнительных Compose-файлов при обновлении и подключать их помощнику на чтение. Добавить проверки override, постоянных каталогов dev-данных и документацию проекта. Явно задать русский язык в тестах русских подписей.
5.6 KiB
Постоянное dev-окружение задачи
Обычная основная копия сохраняет прежние ./data и Docker secret volumes.
CHATBALLS_DEV_DATA_DIR в compose.dev.yaml позволяет разместить PostgreSQL,
Redis и media вне checkout. В production используются прежние именованные тома.
Для worktree используйте scripts/task-dev.ps1. Он требует имя окружения,
свободный диапазон из шести портов и абсолютный каталог данных вне всех worktree:
./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).
Перенос существующих данных
- Запишите исходное имя Compose и mount paths через
docker inspect. - Остановите все сервисы, которые пишут в PostgreSQL, Redis и media.
- Сделайте резервную копию и проверьте её; копируйте полный
data, включая PostgreSQL WAL и служебные файлы, в постоянный каталог. Исходник сохраняйте. - Сохраните прежнее имя Compose и все три исходных secret volumes. Не используйте
down -v, не удаляйте тома и не генерируйте новые пароли для существующей базы. - Задайте
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):
$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.