Some checks failed
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Docker Public / Build + push Public (test + latest) (push) Has been cancelled
Docker Web / Build + push Web (push) Has been cancelled
Docker Public / Deploy :test → test.food-market.kz (push) Has been cancelled
Docker Web / Deploy Web on stage (push) Has been cancelled
05.10.2026 общий postgres-инстанс с чужими боевыми базами (sklad, purchase, calcman, calcman_staging, makesales + мусорная старая food_market) вынесен из compose прода food-market в отдельный compose-проект shared-postgres (контейнер shared-postgres, порт 5434, том food-market-postgres-data external). Прод food-market поднимается в собственный контейнер food-market-prod-postgres (порт 5437, том food-market-prod-postgres-data). Простой при разделении — 12с, соседи живы. См. docs/shared-postgres-followup-progress.md. Этот коммит синхронизирует репозиторий, чтобы следующий деплой из main не воскресил старую раскладку: - deploy/docker-compose.yml: container_name/port/volume приведены к прод-файлу (food-market-prod-postgres, 127.0.0.1:5437, food-market-prod-postgres-data). - deploy/shared-postgres/ (новое): документационная копия соседнего compose'а, с явной пометкой «food-market им не управляет». - deploy/food-market-backup.sh / anonymize-prod.sh / db-schema-diff.sh: defaults FM_PG_CONTAINER / FM_PROD_CONT = food-market-prod-postgres. - docs/RUNBOOK.md: новый раздел «Postgres на prod-vm» с таблицей трёх инстансов и явным запретом трогать shared-postgres из наших скриптов. - docs/backup-restore.md: контейнер в таблице и примерах — новый. Guards (не в репе — живут в ~/deploy-stage.sh и ~/quality-watchdog.sh) расширены симметрично: стенду запрещены shared-postgres, food-market-prod- postgres[-data], 5434/5437; проду — food-market-postgres-data (чужие данные). Проверка: docker compose config/ps на prod-vm shared-postgres не упоминают, grep по репе — ни один скрипт не делает docker exec в shared-postgres.
3.7 KiB
3.7 KiB
shared-postgres follow-up: репозиторий ↔ новая раскладка postgres прода
Задача. 2026-10-05 координатор физически разделил два инстанса postgres на prod-vm:
shared-postgres(~/shared-postgres/docker-compose.yml, контейнерshared-postgres, порт127.0.0.1:5434, томfood-market-postgres-dataexternal). Внутри — ЧУЖИЕ боевые базы:sklad,purchase,calcman,calcman_staging,makesales, плюс мусорная стараяfood_market(повреждена, не восстанавливаем). Проект compose —shared-postgres, не наш, живёт отдельно.food-market-prod-postgres(~/food-market/deploy/docker-compose.ymlна prod-vm, контейнерfood-market-prod-postgres, порт127.0.0.1:5437, томfood-market-prod-postgres-data). Это НОВЫЙ собственный postgres прода food-market. Пока не запущен — прод-API лежит.
Старый compose прода (project deploy, контейнер food-market-postgres, том food-market-postgres-data на тех же данных) более не существует. Простой при разделении — 12 секунд, соседи живы. Бэкап: docker-compose.yml.bak-20261005 на prod-vm.
Теперь нужно догнать репозиторий (шаблоны, guards, скрипты, доки), чтобы следующий деплой из main не воскресил старую раскладку, а любой docker exec в shared-postgres из кода food-market был бы невозможен.
Правила на будущее
- Прод food-market использует
food-market-prod-postgres/ томfood-market-prod-postgres-data/ порт127.0.0.1:5437. shared-postgresне принадлежит проекту food-market. Егоcontainer_name, том и порт — запрещённые паттерны в наших compose/скриптах.- Том
food-market-postgres-data— исторический дляshared-postgres, в food-market compose его быть не должно (чужие данные).
Чеклист
- 1. Шаблон репо
deploy/docker-compose.ymlприведён к прод-файлу (контейнер/том/порт прода). Добавленdeploy/shared-postgres/docker-compose.ymlкак документация соседнего compose-проекта (управляется отдельно). - 2. Guards расширены:
~/deploy-stage.shи~/quality-watchdog.sh(+их копии в репо, если есть) запрещают стендуshared-postgres,food-market-prod-postgres,food-market-prod-postgres-data, порты5434/5437; проду — томfood-market-postgres-data. - 3. Скрипты и доки:
deploy/food-market-backup.sh,deploy/anonymize-prod.sh,deploy/db-schema-diff.sh,docs/RUNBOOK.md,docs/backup-restore.mdуказывают наfood-market-prod-postgresвместо старогоfood-market-postgres; RUNBOOK явно говорит «shared-postgres не наш». - 4. Проверка на prod-vm:
docker compose -f ~/food-market/deploy/docker-compose.yml configиdocker compose ps -aне упоминаютshared-postgres;grepпо репе — ни один скрипт не делаетdocker execвshared-postgres.
Прод не запускается, shared-postgres и чужие базы не трогаются, global.json и gateway nginx вне скоупа.