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