Skip to content

Откат на предыдущую версию

Откат на предыдущую версию

Когда нужен откат

  • Healthcheck не прошёл после деплоя
  • Критические ошибки в логах сразу после обновления
  • Деплой завершился ошибкой

Автоматический откат (при деплое через deploy.sh)

deploy.sh автоматически вызывает rollback.sh при неудаче healthcheck:

Окно терминала
bash /opt/terma-grand/repo/scripts/deploy/deploy.sh --tag v1.1.0
# → если healthcheck не прошёл → автоматический rollback на предыдущий тег

Ручной откат

1. Откат через rollback.sh (рекомендуется)

Окно терминала
cd /opt/terma-grand/repo
# Автоматически определит предыдущий image tag
bash scripts/deploy/rollback.sh
# Или явно указать тег
bash scripts/deploy/rollback.sh --to v1.0.0
# Или по git SHA
bash scripts/deploy/rollback.sh --to abc1234

2. Ручной откат пошагово

Если скрипт недоступен:

Окно терминала
cd /opt/terma-grand/repo
# 1. Посмотреть доступные образы
docker images | grep terma-grand
# 2. Остановить сервисы
IMAGE_TAG="" docker compose -f docker-compose.prod.yml down
# 3. Checkout предыдущей версии
git log --oneline -10 # найти предыдущий коммит/тег
git checkout v1.0.0 # или git checkout <sha>
# 4. Запустить с предыдущим образом
IMAGE_TAG=v1.0.0 docker compose \
-f docker-compose.prod.yml \
--env-file .env.prod \
up -d
# 5. Проверить
bash scripts/deploy/health-check.sh

Просмотр доступных образов

Окно терминала
docker images terma-grand --format "table {{.Tag}}\t{{.CreatedAt}}\t{{.Size}}"

Пример:

TAG CREATED AT SIZE
v1.1.0 2026-04-22 10:00:00 +0000 UTC 450MB
v1.0.0 2026-04-15 09:00:00 +0000 UTC 445MB
latest 2026-04-22 10:00:00 +0000 UTC 450MB

Откат базы данных

В случае если новая версия сделала несовместимые миграции БД:

Окно терминала
# 1. Восстановить из бэкапа, сделанного ПЕРЕД деплоем
bash scripts/deploy/restore.sh \
--from "s3://terma-grand-backups/pg/daily/<dump_before_deploy>.sql.gz.gpg"

Важно: Перед каждым деплоем рекомендуется запускать backup.sh вручную — как checkpoint.


Проверка после отката

Окно терминала
# Статус контейнеров
docker compose -f docker-compose.prod.yml ps
# Healthcheck
bash scripts/deploy/health-check.sh
# Логи app
docker compose -f docker-compose.prod.yml logs --tail=50 app
# API
curl https://termagrand.ru/api/health

Следующий шаг

08 — Безопасность и 152-ФЗ