Обновление системы
Компоненты «ФинГрад — Корпоративное казначейство» распространяются в виде Docker-образов, поэтому обновление системы – это замена контейнеров на контейнеры с образами новой версии. Данные при обновлении сохраняются:
- учётные записи, проводки и настройки хранятся в базе данных;
- конфигурация, сертификаты и криптоконтейнеры – в рабочих каталогах на хосте, которые монтируются в новые контейнеры.
Вместе с приложением может потребоваться обновить и базу данных: новая версия приложения может требовать более новой версии структуры БД (см. Обновление базы данных).
Порядок обновления
- резервная копия базы данных;
- получение образов новой версии;
- остановка контейнеров текущей версии;
- обновление базы данных;
- запуск контейнеров новой версии.
Конкретные шаги зависят от способа установки: через Docker Compose или вручную.
В изолированном контуре образы новой версии переносятся на целевые машины так же, как при установке, – см. Передача дистрибутива в сеть без доступа в Интернет.
Резервная копия базы данных
Перед обновлением сделайте резервную копию базы данных штатными средствами СУБД: pg_dump для PostgreSQL, BACKUP DATABASE для Microsoft SQL Server.
Понижение версии базы данных не предусмотрено. Если после обновления потребуется вернуться на предыдущую версию приложения, база данных восстанавливается из резервной копии.
Обновление при установке через Docker Compose
Порядок обновления системы, установленной автоматизированным способом. Команды выполняются в рабочем каталоге с файлами docker-compose.yml и .env (в примерах установки – ~/fingrad).
-
Сделайте резервную копию базы данных.
-
В файле
.envукажите новую версию дистрибутива в переменнойVERSION. -
Загрузите образы новой версии (приложение при этом может продолжать работать):
docker compose pull -
Остановите приложение:
docker compose down -
Обновите базу данных – см. Обновление базы данных. Если обновление не требуется, утилита сообщит об этом и не внесёт изменений.
-
Запустите стек:
docker compose up -d -
Убедитесь, что сервисы запустились (колонка
STATUSдолжна статьhealthy) и вход в систему выполняется:docker compose ps
Обновление при ручной установке
Порядок обновления системы, установленной вручную. Шаги выполняются на каждом хосте с контейнерами приложения: для веб-приложения и, если он используется, для транспортного сервера.
-
Сделайте резервную копию базы данных.
-
Загрузите образы новой версии на соответствующие хосты (см. Получение дистрибутива):
docker pull registry.fingrad.com/web:{version}docker pull registry.fingrad.com/transport-server:{version} -
Остановите и удалите контейнеры текущей версии. Рабочие каталоги с конфигурацией и данными на хостах при этом сохраняются.
Для веб-приложения:
docker container stop fingrad-webdocker container rm fingrad-webДля транспортного сервера:
docker container stop fingrad-transport-serverdocker container rm fingrad-transport-server -
Обновите базу данных – см. Обновление базы данных. Если обновление не требуется, утилита сообщит об этом и не внесёт изменений.
-
Запустите контейнеры новой версии теми же командами, что и при установке, указав новый номер версии в теге образа: Запуск веб-приложения и Запуск транспортного сервера. Изменять конфигурационные файлы и рабочие каталоги не нужно.
Обновление базы данных
Приложение работает только с базой данных, структура которой соответствует версии приложения, и само базу не обновляет. Обновление структуры БД требуется не при каждом обновлении приложения, но если оно требуется, а база не обновлена, вход в систему будет невозможен: приложение сообщит, что версия базы данных устарела.
Базу данных обновляет утилита DbManager, входящая в дистрибутив приложения, – та же, которой база создавалась при установке. Выполняйте команду образом новой версии – той, на которую обновляется система: по версии утилиты определяется целевая версия БД. Обновляться можно сразу через несколько версий – утилита последовательно применит все промежуточные обновления.
Проще всего обновлять БД при каждом обновлении системы: если база уже актуальна, утилита не внесёт изменений и сообщит, что обновление не требуется.
Перед обновлением БД остановите контейнеры веб-приложения и транспортного сервера: активные подключения к базе данных будут принудительно завершены. Убедитесь, что есть свежая резервная копия.
Шаблон команды терминала для обновления БД:
docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:{version} \
../DbManager.dll /action=upgrade /dbms={dbms} /server={server} [/port={port}] /user={user} /password={password} /database={database}
где:
{version}– номер новой версии дистрибутива, на которую обновляется система;{dbms}– тип используемой СУБД:postgresql– PostgreSQL;mssql– Microsoft SQL Server;
{server}– адрес сервера СУБД;{port}– порт подключения к СУБД, указывается при необходимости;{user}– имя учётной записи СУБД (используйте ту же, что и при создании БД);{password}– пароль учётной записи СУБД;{database}– имя обновляемой базы данных.
Пример команд для обновления БД с названием MyCompany на сервере СУБД с IP-адресом 10.0.0.123 под учётной записью login / pass.
Для PostgreSQL:
docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:6.0.0.41569 \
../DbManager.dll /action=upgrade /dbms=postgresql /server="10.0.0.123" /port=5432 /user=login /password=pass /database=MyCompany
Для Microsoft SQL Server:
docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:6.0.0.41569 \
../DbManager.dll /action=upgrade /dbms=mssql /server="10.0.0.123" /user=login /password=pass /database=MyCompany
В результате успешного обновления окончание вывода команды будет иметь вид:
База "MyCompany" обновлена до версии 3927.
Завершение работы...
Обновление применяется только к основной БД приложения. Если транспортный сервер использует отдельную БД, то выполнять команду на ней не требуется.