Открыть меню
Платформа Эра. Документация
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Обновление платформы через апгрейд докер-контейнера: различия между версиями

Материал из Платформа Эра. Документации
Нет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 4: Строка 4:


=== Важная информация ===
=== Важная информация ===
<blockquote>При обновлении платформы на версию 1.9 и выше, с более низких версий, после обновления потребуется '''переактивация лицензии'''. За токеном активации лицензии необходимо обратиться к вашему менеджеру.</blockquote>
<blockquote>При обновлении платформы на версию 1.9 и выше, с более низких версий, после обновления потребуется '''переактивация лицензии'''. За токеном активации лицензии необходимо обратиться к вашему менеджеру.
 
После переактивации лицензии, необходимо заново перераспределить её из мастер домена в продуктовые домены, а так же перераспределить лицензируемые параметры в самих продуктовых доменах.</blockquote>
 
=== Шаг 1. Выяснить текущее имя контейнера с платформой. ===
Это имя формата "era<Postfix>", заданное при установке системы или при прошлом апгрейде.


=== Шаг 1. Выяснить текущее имя контейнера с платформой. Это имя формата "era<Postfix>", заданное при установке системы или при прошлом апгрейде. ===
Обнаружить его можно, выполнив команду:
Обнаружить его можно, выполнив команду:
  docker ps -a
  docker ps -a
Строка 12: Строка 16:


=== Шаг 2. Сгенерировать строку запуска контейнера. ===
=== Шаг 2. Сгенерировать строку запуска контейнера. ===
Можно вручную собрать с помощью шаблона в файле инсталлятора install.sh, или если есть интернет выполнить команду:
Для генерации строки запуска контейнера, необходимо использовать скрипт в папке со скриптом установки платформы:<syntaxhighlight lang="bash">
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike <CurrentContainerName>
bash gen_container_cmd_ssh.sh --user=era --host=192.168.0.1 --port=22
Где "<CurrentContainerName>" это имя текущего контейнера, выясненное на предыдущем шаге.
</syntaxhighlight>данный скрипт подключается с помощью SSH к серверу с установленной платформой и формирует в качестве резульата строку запуска.
 
Данная команда выдаст в консоль строку запуска контейнера.
 
Данную строку необходимо сохранить, в дальнейшем она будет необходима.


ВАЖНО! Проверить в полученной команде наличия параметра "--restart unless-stopped". Без него контейнер не стартанет после будущего обновления.
ВАЖНО! Проверить в полученной команде наличия параметра "--restart unless-stopped". Без него контейнер не стартанет после будущего обновления.
Строка 36: Строка 36:
Новое имя контейнера необходимо для возможности быстрого отката на предыдущую версию. Второй контейнер с тем же именем не может быть создан и запущен. После запуска и проверки корректности состояния предыдущий контейнер можно удалить.
Новое имя контейнера необходимо для возможности быстрого отката на предыдущую версию. Второй контейнер с тем же именем не может быть создан и запущен. После запуска и проверки корректности состояния предыдущий контейнер можно удалить.


=== Шаг 6. Установить часовой пояс внутри контейнера ===
=== Шаг 6. Проверить возможные линки на другие директории ===
unlink /etc/localtime
Для выполнения команд внутри контейнера необходимо запустить sh следующей командой:
 
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
<code>docker exec -it <mycontainer> sh</code>
Шаг 7. Проверить возможные линки на другие директории


era_meet: в рабочей директории "/var/lib/era/<MeetNode>/"
era_meet: в рабочей директории "/var/lib/era/<MeetNode>/"

Текущая версия от 14:49, 14 апреля 2025

В случаях, когда обновление через API невозможно, необходимо провести операцию апгрейда с заменой docker-образа и пересозданием контейнера.

Все данные, сохраненные в БД, а также файлы и каталоги в волюмах на хосте, остаются нетронутыми, и после запуска новой версии системы сохраняются и используются.

Важная информация

При обновлении платформы на версию 1.9 и выше, с более низких версий, после обновления потребуется переактивация лицензии. За токеном активации лицензии необходимо обратиться к вашему менеджеру. После переактивации лицензии, необходимо заново перераспределить её из мастер домена в продуктовые домены, а так же перераспределить лицензируемые параметры в самих продуктовых доменах.

Шаг 1. Выяснить текущее имя контейнера с платформой.

Это имя формата "era<Postfix>", заданное при установке системы или при прошлом апгрейде.

Обнаружить его можно, выполнив команду:

docker ps -a

и найдя активный контейнер с указанным форматом имени.

Шаг 2. Сгенерировать строку запуска контейнера.

Для генерации строки запуска контейнера, необходимо использовать скрипт в папке со скриптом установки платформы:

bash gen_container_cmd_ssh.sh --user=era --host=192.168.0.1 --port=22

данный скрипт подключается с помощью SSH к серверу с установленной платформой и формирует в качестве резульата строку запуска.

ВАЖНО! Проверить в полученной команде наличия параметра "--restart unless-stopped". Без него контейнер не стартанет после будущего обновления.

Шаг 3. Загрузить новый образ

docker load -i <ImageFileName>

заменив "<ImageFileName>" на имя docker-образа с новой версией. Образ имеет имя формата "era_<VERSION>_docker.tar.gz".

Шаг 4. Остановить текущий контейнер:

docker container stop <CurrentContainerName>

Шаг 5. Запустить новый контейнер

Выполняем команду из пункта 2, заменив имя контейнера на новое. Например, если оригинальная команда была:

docker run --name era<Postfix1> ...

то она становится:

docker run --name era<Postfix2> ...

Новое имя контейнера необходимо для возможности быстрого отката на предыдущую версию. Второй контейнер с тем же именем не может быть создан и запущен. После запуска и проверки корректности состояния предыдущий контейнер можно удалить.

Шаг 6. Проверить возможные линки на другие директории

Для выполнения команд внутри контейнера необходимо запустить sh следующей командой:

docker exec -it <mycontainer> sh

era_meet: в рабочей директории "/var/lib/era/<MeetNode>/"