Обновление системы с помощью Docker

Совет

Ниже приведен пример обновления системы с версии 2.6 на 2.7

Предварительные условия

  • Сервер, на котором размещена обновляемая версия Юниверс DG, имеет доступ к интернету.

  • Установлен Git.

  • Установлен Docker Compose (версия выше 1.29).

  • Проект Юниверс DG был клонирован на сервер.

Обновление системы

Предупреждение

Начиная с версии 2.5 был осуществлен переход с Elasticsearch на OpenSearch. Если обновлять ветку, имея поднятый docker, то старый контейнер elasticsearch будет препятствовать дальнейшим запускам. Поэтому рекомендуется выполнить нижеописанные действия

  1. Перед обновлением остановите работу образа Docker Compose через команду docker-compose down

    • Поднять контейнеры после обновления возможно через команду: docker-compose up --force-recreate -d --remove-orphans. Последняя опция очищает Elasticsearch контейнер

  2. Войдите в репозиторий Gitlab (доступ к репозиторию с дистрибутивом вашего продукта должен быть получен заранее согласно договору поставки).

  3. Переключитесь на ветку release/2.7

  4. Извлеките проект. Команда git pull

  5. Выполните миграцию на Opensearch с потерей или сохранением данных (см. инструкцию ниже).

  6. Перейдите в каталог с кодом. Пример команды:

    cd universe-dg-deploy
    
  7. При необходимости в файле .env, расположенном в корне проекта, измените параметры для БД и параметры портов. Пример параметров ниже.

  8. Для запуска системы используйте команду:

    docker-compose up -d
    

Пример файла .env:

BACKEND_IMAGE=docker.universe-data.ru/unidata-dg/backend:release-2-9-5e0003ce
FRONTEND_IMAGE=docker.universe-data.ru/unidata-dg/frontend:release-2-9-ac16b8c8

OPENSEARCH_HTTP_OUTER_PORT=19200

DG_POSTGRES_USER=postgres
DG_POSTGRES_PASSWORD=postgres
DG_POSTGRES_DB_NAME=postgres
POSTGRES_OUTER_PORT=15432

ORIENTDB_HTTP_OUTER_PORT=12480
ORIENTDB_OUTER_PORT=12424
ORIENTDB_DB_NAME=dg

FRONTEND_PORT=8080
BACKEND_PORT=9080

#nginx.conf
BACKEND_ADDRESS=http://dg:8080
CLIENT_MAX_BODY_SIZE=100m
PROXY_SEND_TIMEOUT=600s
PROXY_READ_TIMEOUT=600s
SEND_TIMEOUT=600s

#TIMEZONE=Europe/Moscow

EMAIL_FRONTEND_URL=''
EMAIL_ENABLED=false
EMAIL_SERVER_HOST=localhost
EMAIL_SERVER_PORT=5025
EMAIL_SSL_ENABLE=true
EMAIL_STARTTLS_ENABLE=false
EMAIL_USERNAME=universe@example.com
EMAIL_PASSWORD=password
BULK_XLSX_IMPORT_BLOCK_SIZE=1000

MODULES_BLACKLIST=org.unidata.dg.crawler,com.universe.dg.dis.crawlers

GUEST_MODE=false
DG_DQ_ENSURE_MODEL=false

DG_DIS_UPDATE_PROFILES_PROJECTS_JOB_DISABLED=true
DG_DIS_UPDATE_PROFILES_PROJECTS_CRONEX=0 0 0/1 * * ?
DG_DIS_UPDATE_PROFILES_URL=http://localhost/list/profiles
DG_DIS_UPDATE_PROJECTS_URL=http://localhost/list/projects

Переход с ElasticSearch на OpenSearch

Примечание

Шаги по переходу на OpenSearch требуются, если система Юниверс DG обновляется с версии 2.4 и старше на версию 2.5 и новее. Если переход уже был выполнен - шаги пропускаются

Переход на OpenSearch с потерей данных

  • Поскольку данные не будут перенесены, выполните операцию переиндексации данных, а при наличии правил качества - операцию переприменения данных.

Важные примечания:

  • Если в качестве хранилища для аудита выбран поисковой движок, журнал событий будет утерян — его невозможно восстановить из БД, даже если она также указана в качестве хранилища.

Переход на OpenSearch с переносом данных

  1. В docker-compose конфигурации контейнера Opensearch укажите существующий volume с данными Elasticsearch — dg-elasticsearch-data:/usr/share/opensearch/data.

  2. В случае если необходимо избавиться от упоминания Elastic, то можно оставить volume по умолчанию (dg-opensearch-data), выполнив одно из двух действий:

    • Клонировать volume. Пример:

      docker run --rm \
          -v dg-elasticsearch-data:/original \
          -v dg-opensearch-data:/migration \
          ubuntu:latest \
          bash -c "cp -R /original/* /migration/"
      
    • Переименовать volume:

      mv /var/lib/docker/volumes/dg-elasticsearch-data /var/lib/docker/volumes/dg-opensearch-data