fix(tradein/deploy): подключить selectel-оверрайд — иначе после переезда бот умрёт молча #3093

Merged
lekss361 merged 1 commit from fix/tradein-deploy-telegram-pin into main 2026-08-25 16:39:41 +00:00

1 commit

Author SHA1 Message Date
bot-backend
13269d8ebb fix(tradein/deploy): подключить selectel-оверрайд — иначе после переезда бот умрёт молча
All checks were successful
CI / changes (pull_request) Successful in 10s
CI Trade-In / changes (pull_request) Successful in 7s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m5s
CI / backend-tests (pull_request) Successful in 17m28s
docker-compose.selectel.yml лежит в репозитории с 23.08 и закрепляет рабочий IP
api.telegram.org через extra_hosts у backend и tgbot. Но ни один вызов compose в
deploy-tradein.yml его не подключал — везде было жёстко `-f docker-compose.prod.yml`.

Написанный, но никем не подключённый оверрайд выглядит как решённая проблема,
оставаясь нерешённой: первый же деплой на новом хосте поднял бы МЕРУ БЕЗ
закрепления, и телеграм-бот вместе с пересылкой алертов умерли бы молча. У
api.telegram.org семь публикуемых адресов, с Selectel отвечает РОВНО ОДИН
(149.154.167.220), и штатный резолвер отдаёт мёртвый. Отказ скрывает сам себя:
канал, которым мы узнали бы о беде, — тот же самый Telegram.

Вводится COMPOSE_FILES, подставляется в три вызова, создающих контейнеры (pull,
up -d postgres, up -d $SERVICES). Остальные вызовы в файле — exec -T против уже
поднятых контейнеров, им набор -f не нужен.

Подключается безусловно, на обоих хостах. Замер 25.08 с Beget:
    149.154.167.220 -> 302 за 0.18 с
    реальный Bot API /getMe -> {"ok":false,"error_code":401}
то есть отвечает именно Telegram. Условная логика «оверрайд только на Selectel»
была бы лишней машинерией ради хоста, который после 30.08 перестанет быть
продовым. Цена: на Beget пропадает запасной путь через резолвер — принято
сознательно, в файле это оговорено как единственная точка отказа.

Пропажа файла валит деплой, а не печатает предупреждение: файл git-tracked, а
шагом выше рабочее дерево принудительно приводится к origin/main, поэтому его
отсутствие означает поломку. Зелёный лог с предупреждением был бы ровно тем
тихим отказом, от которого защищает правка.

Шапка docker-compose.selectel.yml переписана: файл больше не Selectel-only.
Там же зафиксировано, почему его нельзя подмешивать к стеку ПТИЦЫ — сервиса
tgbot там нет, compose отвергает весь проект ("has neither an image nor a build
context"), а сервис backend есть в обоих, и закрепление молча легло бы на
бэкенд Птицы. Раннбук окна предлагал именно такую команду — проверено, падает.

Refs #3059
2026-08-25 19:20:43 +03:00