Перейти к содержанию

Обновление версии

Пошаговая инструкция по обновлению Р13.Орбита до новой версии.

Подготовка

1. Проверка текущей версии

docker exec orbita cat /app/VERSION
# или
curl http://localhost:8000/health | jq '.version'

2. Резервное копирование

Обязательно создайте резервную копию перед обновлением:

# См. подробнее в разделе Резервное копирование
./backup.sh

3. Проверка новой версии

Изучите История изменений для понимания: - Новых возможностей - Исправленных ошибок - Breaking changes - Требований к миграции


Процедура обновления

Шаг 1: Загрузка нового образа

docker pull your-registry.company.com/orbita:1.3.0

Шаг 2: Остановка текущего контейнера

docker stop orbita

Шаг 3: Создание резервной копии контейнера

docker commit orbita orbita-backup-$(date +%Y%m%d)

Шаг 4: Удаление старого контейнера

docker rm orbita

Шаг 5: Запуск новой версии

docker run -d \
  --name orbita \
  --restart unless-stopped \
  -p 8000:8000 \
  --env-file .env \
  -v $(pwd)/domains:/app/domains \
  -v $(pwd)/logs:/app/logs \
  your-registry.company.com/orbita:1.3.0

Шаг 6: Проверка работоспособности

# Проверка health check
curl http://localhost:8000/health

# Проверка версии
curl http://localhost:8000/health | jq '.version'

# Проверка логов
docker logs orbita --tail 50

Обновление через Docker Compose

Если используете Docker Compose:

1. Обновите docker-compose.yml

services:
  orbita:
    image: your-registry.company.com/orbita:1.3.0  # Новая версия
    # ...остальная конфигурация

2. Примените изменения

docker-compose pull
docker-compose up -d

Docker Compose автоматически: - Загрузит новый образ - Остановит старый контейнер - Запустит новый контейнер


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

Если возникли проблемы:

Вариант 1: Использование старого образа

docker stop orbita
docker rm orbita

docker run -d \
  --name orbita \
  --restart unless-stopped \
  -p 8000:8000 \
  --env-file .env \
  -v $(pwd)/domains:/app/domains \
  -v $(pwd)/logs:/app/logs \
  your-registry.company.com/orbita:1.2.5  # Старая версия

Вариант 2: Использование резервной копии

docker stop orbita
docker rm orbita
docker run -d --name orbita orbita-backup-20240315

Вариант 3: Docker Compose

# Откатите версию в docker-compose.yml
docker-compose up -d

Миграция данных

Некоторые обновления требуют миграции данных:

# Выполните миграцию внутри контейнера
docker exec orbita alembic upgrade head

Проверьте История изменений - там указано, требуется ли миграция.


Тестирование после обновления

  • API отвечает на запросы
  • Swagger UI доступен
  • CLI подключается к API
  • Простой запрос выполняется успешно
  • Датасеты доступны
  • Визуализации создаются
  • Логи не содержат ошибок

Обновление в production

Zero-downtime обновление

Для обновления без остановки сервиса:

  1. Запустите новую версию на другом порту
  2. Переключите load balancer на новый порт
  3. Дождитесь завершения активных запросов на старой версии
  4. Остановите старую версию
# Запуск новой версии
docker run -d \
  --name orbita-new \
  -p 8001:8000 \
  --env-file .env \
  -v $(pwd)/domains:/app/domains \
  your-registry.company.com/orbita:1.3.0

# Проверка
curl http://localhost:8001/health

# Переключение nginx/load balancer
# ...

# Остановка старой версии
docker stop orbita
docker rename orbita orbita-old
docker rename orbita-new orbita

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