Files
chatballs/deploy/docker/updater.Dockerfile
T
AndreyandClaude Fable 5.1 5396dda8ad ✨ feat(updates): обновление установки из интерфейса
Установка раз в шесть часов и по кнопке проверяет страницу релизов
GitHub. Администратор установки видит баннер о новой версии и ставит
её одной кнопкой; карточка «Обновления» — в «Настройки → Платформа».

Установку выполняет отдельный сервис updater с Docker-сокетом:
backend-app общается с ним только файлами в томе chatballs-updates
(heartbeat, request.json, status.json). Updater принимает лишь релизы
своего репозитория с образами по digest и применяет compose.yaml в
одноразовом контейнере-помощнике, после чего кладёт файл в каталог
установки. Запрос установки попадает в аудит.

Релизный workflow собирает образ updater и пришпиливает его в
compose.yaml; версия бэкенда зашивается в образ (CHATBALLS_VERSION).
Миграции updates.0001 и tenancy.0034 (гранты на таблицу состояния).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 00:43:11 +03:00

12 lines
789 B
Docker

# Сервис updater: обновление установки по кнопке из интерфейса (ADR-CHATBALLS-0049).
# Официальный образ docker CLI с плагином compose плюс два сценария; больше в
# нём ничего нет. Базовый образ закрепляется по digest при сборке релиза.
ARG CHATBALLS_UPDATER_BASE_IMAGE=docker:27-cli
FROM ${CHATBALLS_UPDATER_BASE_IMAGE}
COPY deploy/updater/chatballs-updater.sh /usr/local/bin/chatballs-updater.sh
COPY deploy/updater/chatballs-updater-apply.sh /usr/local/bin/chatballs-updater-apply.sh
RUN chmod 0755 /usr/local/bin/chatballs-updater.sh /usr/local/bin/chatballs-updater-apply.sh
ENTRYPOINT ["/bin/sh", "/usr/local/bin/chatballs-updater.sh"]