Обновление системы
Обновление при наличии доступа к внешнему репозиторию docker-образов YCR
Важно
Обновление до 2024.5 требует выполнения ряда дополнительных шагов как перед обновлением, так и после обновления перед запуском системы, детали см. в разделе «Обновление до 2024.5».
- Остановите Стингрей согласно инструкциям в разделе «Остановка Стингрей».
-
Обновите специальный docker-образ для подготовки конфигурационных файлов командой:
docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest
Примечание
Версия релиза может быть указана двумя способами. Если она указана как
latest
, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например, 2022.12 или 2023.10. В этом случае команда может выглядеть следующим образом:docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:2023.10
-
При обновлении Стингрей с версии 2022.8 (или более ранней) до версии 2023.10 необходимо выполнить несколько дополнительных шагов, связанных с изменением места хранения нескольких служебных каталогов.
3.1. Создайте каталог с помощью команды
sudo mkdir -p $HOME/service
где
$HOME
— директория установки Стингрей, например, /opt/stingray/stingray_docker.3.2. Установите утилиту rsync, если она не была установлена ранее.
apt install rsync
yum install rsync
3.3. Синхронизируйте служебные каталоги с помощью утилиты rsync.
sudo rsync -aqxP /docker/stingray/postgresql $HOME/service sudo rsync -aqxP /docker/stingray/rabbitmq $HOME/service sudo rsync -aqxP /docker/stingray/redis $HOME/service sudo rsync -aqxP $HOME/neo4j $HOME/service sudo rsync -aqxP $HOME/nginx $HOME/service
-
Запустите docker-контейнер с параметром
update
.docker run -i -t -v /opt/stingray:/opt/docker-files cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest update
Примечание
Версия релиза может быть указана двумя способами. Если она указана как
latest
, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например, 2022.12 или 2023.10. -
После завершения копирования новых конфигурационных файлов необходимо выполнить команду обновления образов из директории с конфигурационными файлами (в примере — /opt/stingray):
docker-compose pull docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/android_api30:latest docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/ios:latest docker-compose up -d docker exec stingray-maintenance django-admin maintenance engines recreate
Примечание
Команда
recreate
пересоздает контейнеры в их ранее сохраненном состоянии, используя новые версии образов.Примечание
Версия релиза может быть указана двумя способами. Если она указана как
latest
, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например, 2022.12 или 2023.10.Примечание
При скачивании нового образа старый образ не удаляется. Чтобы накопившиеся старые образы не занимали много места, рекомендуется их удалять, например, с помощью следующих команд:
docker image prune
Эта команда удалит все docker-образы без тегов (у которых тег
<none>
). Следует учитывать, что она не удалит образы с предыдущими версиями. Например, если была установлена версия Стингрей 2.7, а вместо нее поставили новую версию 2022.X, то старые образы не будут удалены, так как тег у старого образа будет 2.7, а не<none>
.docker image prune -a
Эта команда удалит docker-образы без тегов (у которых тег
<none>
) и docker-образы, которые не используются ни одним контейнером. Но если, например, ещё ни один engine контейнер для какого-нибудь нового образа не создавался (а такое может быть, например, если версия для iOS ещё не использовалась), то эта команда удалит соответствующий образ. Далее, когда возникнет необходимость создать контейнер из этого образа, то это сделать уже не удастся, так как такого образа уже не будет.docker image rm image_id
Эта команда предназначена для индивидуального удаления образов.
-
В случае возникновения ошибок возможна загрузка образов вручную:
docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/stingray:latest docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/android_api30:latest docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/ios:latest docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/stingray-ui:latest docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/stingray-knowledgebase:latest
Примечание
Версия релиза может быть указана двумя способами. Если она указана как latest, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например, 2022.12 или 2023.10.
После загрузки образов запустите систему согласно инструкциям в предыдущем пункте данного раздела.
-
Если осуществляется переход с версии Стингрей 2.х на версию Стингрей 2022.X, для корректной работы вновь установленной версии необходимо однократное выполнение команды:
docker exec stingray-maintenance django-admin maintenance engines fill_id
Эта команда обеспечивает корректное взаимодействие всех компонентов системы после обновления версии. Повторное выполнение этой команды не имеет смысла, но при этом Стингрей продолжит корректно функционировать.
Обновление при отсутствии доступа к внешнему репозиторию docker-образов YCR
Важно
Обновление до 2024.5 требует выполнения ряда дополнительных шагов как перед обновлением, так и после обновления перед запуском системы, детали см. в разделе «Обновление до 2024.5».
-
Остановите Стингрей согласно инструкциям в разделе «Остановка Стингрей».
-
При отсутствии доступа к внешнему репозиторию docker-образов образы поставляются в виде выгруженных tar-архивов. Их необходимо запросить у поставщика продукта.
-
После того, как архивы загружены и перенесены на сервер Стингрей, необходимо их импортировать в docker. Для этого выполните следующую команду для всех полученных архивов:
docker load -i <archive_name>.tar
-
При обновлении Стингрей с версии 2022.8 (или более ранней) до версии 2023.10 необходимо выполнить несколько дополнительных шагов, связанных с изменением места хранения нескольких служебных каталогов, согласно инструкциям в пункте 3 раздела «Обновление при наличии доступа к внешнему репозиторию docker-образов YCR».
-
Запустите специальный конфигуратор (Wizard) с параметром
update
.docker run -i -t -v /opt/stingray-docker-compose:/opt/docker-files cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest update
Примечание
Версия релиза может быть указана двумя способами. Если она указана как
latest
, будет использована версия последнего релиза Стингрей. Пожалуйста, уточняйте эту информацию у вендора или на официальном сайте. Также может быть указана версия конкретного релиза, например, 2022.12 или 2023.10. -
После загрузки образов запустите систему согласно инструкциям в разделе в пунктах 5 и 7 раздела «Обновление при наличии доступа к внешнему репозиторию docker-образов YCR».
Обновление до 2024.5
Обновление до 2024.5 требует выполнения ряда дополнительных шагов как перед обновлением, так и после обновления перед запуском системы.
Перед обновлением
Обновление настроек через новый Wizard
Перед обновлением обязательно выполнить обновление настроек через новый Wizard согласно инструкции по обновлению (с параметром update
).
docker run -i -t -v /opt/stingray:/opt/docker-files cr.yandex/crp8p3a3l1ri2431n3ce/release/wizard:latest update
После выполнения необходимо проверить наличие директорий на хостовой системе:
service/android/Stingray.avd
service/android/api30/AndroidSdk/
Миграция базы данных PostgreSQL с 12 версии на 14
Перед обновлением необходимо произвести миграцию базы данных PostgreSQL с 12 версии до 14.
-
Выполнить остановку Engine-контейнеров.
docker exec stingray-maintenance django-admin maintenance engines preserve
-
Выполнить полную остановку Стингрей.
docker-compose down
-
Сделать бэкап текущего файла docker-compose.yml.
cp docker-compose.yml docker-compose.yml.copy
-
Внести необходимые изменения в файл docker-compose.yml - изменить блок
postgres
и добавить блокpostgres14
.postgres: image: cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:12.15-alpine container_name: stingray-postgres restart: unless-stopped security_opt: - no-new-privileges read_only: true tmpfs: - /run/postgresql - /tmp networks: - stingray-network env_file: - .env settings/prod.env volumes: - ./service/backup:/backup - ./service/postgresql/data:/var/lib/postgresql/data postgres14: image: cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:14.11-alpine container_name: stingray-postgres14 restart: unless-stopped security_opt: - no-new-privileges read_only: true tmpfs: - /var/run/postgresql/ - /tmp networks: - stingray-network env_file: - .env - settings/prod.env volumes: - ./service/backup:/backup - ./service/postgresql14/data:/var/lib/postgresql/data
-
Создать дополнительные директории.
mkdir service/postgresql14 && \ mkdir service/backup
-
Выполнить скачивание дополнительных образов.
docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:12.15-alpine && \ docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:14.11-alpine
-
Выполнить запуск контейнера с базой данных PostgreSQL 12.
docker-compose up -d postgres
-
Выполнить бэкап базы данных.
docker-compose exec -it postgres /bin/bash -c 'pg_dumpall -U $POSTGRES_USER > /backup/backup.sql'
Переменная
$POSTGRES_USER
будет получена из окружения контейнера. Проверить корректность созданного бэкапа можно по пути в$HOME_STINGRAY/service/backup
на исходном сервере. -
Остановить контейнер с базой данных PostgreSQL 12.
docker-compose stop postgres
-
Выполнить запуск контейнера с базой данных PostgreSQL 14.
docker-compose up -d postgres14
-
Выполнить восстановление базы данных из бэкапа.
docker-compose exec -it postgres14 /bin/bash -c 'psql -d $POSTGRES_DB -U $POSTGRES_USER < /backup/backup.sql'
Переменные
$POSTGRES_DB
,$POSTGRES_USER
будут получены из окружения контейнера. -
Остановить контейнер с базой данных PostgreSQL 14.
docker-compose stop postgres14
-
Удалить экземпляр контейнера c PostgreSQL 14.
docker-compose rm postgres14
-
Выполнить перемещение папок с базами данных в файловой системе.
mv service/postgresql service/postgresql12 && \ mv service/postgresql14 service/postgresql
-
Восстановить исходный файл docker-compose.yml.
mv docker-compose.yml.copy docker-compose.yml
-
Перетегировать образ.
docker pull cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:latest
При выполнении этого действия, образ
cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:14.11-alpine
получит второй тегcr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql:latest
. -
Выполнить запуск проекта.
docker-compose up -d
-
Подключиться к базе данных и выполнить восстановление пароля.
docker-compose exec -it postgres /bin/bash -c 'psql -d $POSTGRES_DB -U $POSTGRES_USER' ALTER USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD';
При выполнении команды
ALTER USER
переменные$POSTGRES_USER
,$POSTGRES_PASSWORD
необходимо взять из файла settings/prod.env. -
Проверить работоспособность системы и удалить остатки бэкапов и вспомогательных папок.
Обновление Wizard
-
Для работы сервиса MARIVANNA в файле settings/prod.env необходимо указать корректные данные.
MARIVANNA_CLIENT_ID MARIVANNA_CLIENT_SECRET MARIVANNA_BASE_URL STINGRAY_SERVICES_AUTH_URL
-
Для корректной работы центра лицензирования.
STINGRAY_LICENSE_CENTER_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAun4nI9ETYpDUPQ/TkudHBkcjveHFG1N6s1SQS8MeoSpWKsnY5xGU4lKAlFgvMJMr+eAiyQSKvLRL9dJxUxexlQpoCJpf0lcf/Aq21qUI+k4sfSxMY+iWSPGDH16EpUeOMK0xHPKmVm/EoaF85mbWCaxrZcnFjGgCE0HMx+Pqv6qEEqXj86UTXNFuDqZd5xsEnMaoCYlBc1xvjz0rHWEQr9rNGt5EMw97gmD2DRDc+qMmux2S3wI5t9BG2kHgpqaunyMGPiwAcQrmgH44sxgHv1iDwPd/QmG9DkvTjuMxOqVX63sKxP4HF3FmIXaiWw3VEDBTziD1K/3I5mVv2jdxGwIDAQAB
После обновления, перед запуском
После обновления, перед запуском системы требуется выполнение следующих шагов.
-
Необходимо выполнить целевой пулл проекта
cr.yandex/crp8p3a3l1ri2431n3ce/release/postgresql cr.yandex/crp8p3a3l1ri2431n3ce/release/rabbitmq cr.yandex/crp8p3a3l1ri2431n3ce/release/redis cr.yandex/crp8p3a3l1ri2431n3ce/release/nginx
или скачать дополнительные актуальные образы на машину.
docker-compose pull
-
Удалить папку с данными
data
из rabbitmq.rm -rf $HOME_STINGRAY/service/rabbitmq/data