Ручное обновление

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

Используя файл обновления

1. Загрузить файл обновления в любую папку на сервере, который необходимо обновить

2. Скопировать файл обновления в контейнер

$ docker cp <upfile_name>.zip \ (1)
            <container_name>:<dest_path> (2) (3)
1 <upfile_name> – имя файла обновления.
2 <container_name> – имя контейнера.
3 <dest_path> – папка назначения.

3. Распаковать файл обновления

# unzip -q <upfile_name>.zip (1)
1 <upfile_name> – имя файла обновления

4. Перейти в новый каталог <upfile_name_dir>

5. Выполнить скрипт установки прав на файлы обновления

# sh r_set_permissions

6. Получить информацию об обновлении. Из которой потребуются значения ключей product и product_name для следующей операции.

# ./era_installer product

Например:

# ./era_installer product
07:38:03.872 Era. Product info.
assembly_date: 2019-09-30T12:11:51.896Z
product: 1.9.4
product_name: era
r: 1.12.0
rtx: 3.9.0
app-configuration: 0.1.2
app-notification: 1.0.5
fe-agat: 1.0.0
fe-autoprovision: 2.0.0
fe-calls-statistic: 2.0.0
fe-chronological-reports: 2.1.0
fe-contacts-manager: 2.0.0
fe-data-manager: 2.1.0
fe-monitor: 2.0.0
fe-operative-reports: 2.2.0
fe-reporter: 0.1.1
fe-root: 2.0.1
fe-script-editor: 2.0.0
fe-selector: 2.0.0
fe-vendor-package: 1.3.0
nrr: 2.0.0
webcfg: 2.0.0
  • product – версия продукта

  • product_name – имя продукта

7. Выполнить установку обновления.

# ./era_installer upgrade instdir=/usr/lib/era_platform/<product_name>__<product> (1) (2) (3)
1 instdir – указывает на каталог с бинарными файлами платформы соответствующей версии.
2 <product_name> – название продукта полученное из информации об обновлении.
3 <product> – версия продукта полученная из информации об обновлении.

Например:

# ./era_installer upgrade instdir=/usr/lib/era_platform/era__1.9.4

8. Перезапустить систему

# era restart
Используя новый docker image

1. Загрузить файл нового образа в любую папку на сервере, который необходимо обновить

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

$ sudo docker load -i <image_name>.tar.gz (1)
1 <image_name> - имя файла нового образа системы

3. Узнать имя контейнера.

$ sudo docker ps -a

В результате будут отображены все созданные контейнеры, среди них нужно выбрать целевой.

4. Узнать имена томов используемые контейнером.

$ sudo docker inspect -f '{{range .Mounts}}{{.Name}} | {{end}}' <container_name> (1)
1 <container_name> – имя контейнера.

Например:

$ sudo docker inspect -f '{{range .Mounts}}{{.Name}} | {{end}}' eraer
era_supv_vol | era_var_vol | (1)
1 era_supv_vol и era_var_vol – имена томов.

5. Останавить текущий контейнер

$ sudo docker stop <container_name> (1)
1 <container_name> – имя контейнера.

6. Запустить новый контейнер. При этом указать существующие тома (volume).

$ sudo docker run --name <container_name> \ (1)
                  -v <r_volume_name>:/usr/lib/era \ (2)
                  -v <r_supv_volume_name>:/etc/supervisor/ \ (3)
                  --tmpfs /run:rw,noexec,nosuid,size=4096k
                  -ditP
                  --restart unless-stopped
                  --cap-add=NET_ADMIN
                  --network host
                  <image_name>:<image_tag> (4) (5)
1 <container_name> – имя создаваемого контейнера.
2 <r_volume_name> – том для рабочей директории платформы.
3 <r_supv_volume_name> – том для конфигураций supervisord.
4 <image_name> – имя образа.
5 <image_tag> –тэг образа.

Например:

$ sudo docker run --name eraplatform \
-v era_vol:/usr/lib/era \
-v era_supv_vol:/etc/supervisor/ \
--tmpfs /run:rw,noexec,nosuid,size=4096k \
-ditP \
--restart unless-stopped \
--cap-add=NET_ADMIN \
--network host \
era:1.2.0

7. Удалить старый контейнер (опционально).

$ docker rm <old_container_name> (1)
1 <old_container_name> – имя старого контейнера.