Согласование версий Сервера и Службы опроса

Имеем:

  • Сервер ЛЭРС УЧЁТ на стороне РСО
  • Служба опроса на сервере Управляющей компании (docker версия)

Вопрос: Как сделать так, чтобы версия службы опроса соответствовала версии сервера ЛЭРС УЧЁТ?

Пожалуйста, руководствуйтесь нашей статьей Настройка обновления распределённой системы.

Обратите пожалуйста внимание на то, что служба опроса запущена в докере.

Действительно упустил из виду этот момент. Так как при выполнении обновления ЛЭРС УЧЕТ в docker обновляется сам контейнер, то контролировать из ЛЭРС УЧЕТ, находящимся внутри этого контейнера, данный процесс не представляется возможным.

Штатного способа обновления подобной схемы не существует. Самый простой способ (и наверное самый надежный) это одновременно обновлять ЛЭРС УЧЕТ на стороне Сервера и на стороне Службы опроса.

Посложнее будет написание скрипта, который бы обращался к Серверу по REST API, отправлял запрос “api/v1/serverinfo”, который в том числе содержит информацию о версии Сервера, после чего удалял бы текущий контейнер Службы опроса и устанавливал контейнер той же версии, что и Сервер, Для того чтобы установить конкретную версию, в файл docker-compose.yml перед установкой контейнера Службы опроса в строке “image: lersamr/full:latest” вместо “latest” указывается конкретная версия. Например “image: lersamr/full:3.57.3”. Если это контейнер только со Службой опроса, то соответственно “image: lersamr/pollservice:3.57.3”.

Список всех версий docker можно посмотреть в тегах соответствующего компонента на странице ЛЭРС УЧЕТ в dockerhub.

спасибо получилось.

пример решения:
(заменяет 94 строку в файле docker-compose.yml строкой " image: lersamr/pollservice:3.57.1", версия получена с api сервера.)

LersVer=$( curl -s http://8.8.8.8:10000/api/v1/serverinfo | jq -r '.version' )
sed -i '94s/.*/    image: lersamr\/pollservice:'$LersVer'/' docker-compose.yml