Обновление Userside¶
Это не инструкция по обновлению обычной версии userside на мою версию. Это инструкция по обновлению моей предыдущей версии на мою более новую версию. Если вы ищите инструкцию по переносу userside с обычной версии на мою, то она здесь.
Предупреждение
Не выполняйте обновление или какую-то часть из этих команд, если у вас нет доступа к реестру контейнеров!
Обновление в пределах версии¶
Для обновления в пределах версии, например, с 3.18.19 на 3.18.39, выполните следующие пункты.
Перейти в каталог с набором контейнеров
cd /opt/userside
Остановить набор контейнеров
docker compose stop
Изменить версию образа для сервиса
userside
, указанною после двоеточия, в файлеdocker-compose.yaml
. Например, с версии3.18.19
на версию3.18.39
и версию образа для сервисаpoller
на3.18.22
.services: userside: image: uscr.duckdns.org/userside/userside:3.18.39 poller: image: erpuserside/usm_poller:3.18.22
Актуальные номера версий всегда можно посмотреть в файле-примере
docker-compose.yaml
из архива с примерами.Обновить образы и запустить набор контейнеров (с обновлением устаревших образов)
docker compose pull docker compose up -d
Дождаться завершения миграций и других инсталляционных скриптов. Можно (не обязательно) наблюдать за выполнением:
docker compose logs --no-log-prefix -f userside
Выход Ctrl + C.
Готово.
Обновление на новую версию¶
Для обновления между версиями, например, с 3.17.39 на 3.18.39, выполните следующие пункты.
Обновление с 3.17 на 3.18¶
Перейти в каталог с набором контейнеров
cd /opt/userside
Обязательно сделать резервную копию базы данных
docker compose exec userside backup
Запомните имя файла резервной копии — оно будет отображено сразу после запуска команды. Это имя пригодится в п.10.
Остановить и удалить текущий набор контейнеров
docker compose down -v
Сделать резервную копию файлов
docker-compose.yml
и.env
. Если выполнялся тюнинг PostgreSQL, то скопировать также файлpostgresql.conf
(если параметры настраивались в нём) или файлpostgresql.auto.conf
(если тюнинг производился командамиALTER SYSTEM
). Эти файлы понадобятся на всякий случай, если придется откатывать систему. После успешного обновления их можно будет удалить.sudo mkdir before_update sudo cp docker-compose.yaml before_update/ sudo cp .env before_update/ sudo cp ./data/database/postgresql.conf before_update/ sudo cp ./data/database/postgresql.auto.conf before_update/
Скачать архив с примерами конфигов, разархивировать его. Эти файлы являются образцами и могут быть полезны позже. Копировать файлы из
config-examples
не нужно. Используйте свои прежние файлы.sudo curl http://uscr.duckdns.org/config.tgz -o config.tgz sudo tar xzf config.tgz
Отредактировать файл
.env
sudo nano .env
Добавить в конец файла следующие две переменные. Пропишите пароль websocket (можно изменить также и имя, по желанию). Если вы их не помните — не страшно, придумайте новые:
RABBITMQ_WEBSTOMP_USER=userside-stomp RABBITMQ_WEBSTOMP_PASS=укажите_пароль_websocket
По набору переменных файл должен соответствовать примеру:
config-examples/.env
. Сравните их.Отредактировать файл
docker-compose.yaml
. Замените названия образов (image
) для следующих четырех служб на указанные:services: userside: image: uscr.duckdns.org/userside/userside:3.18.39 postgres: image: erpuserside/userside:3.18-postgres rabbitmq: image: erpuserside/userside:3.18-rabbitmq poller: image: erpuserside/usm_poller:3.18.22
Предупреждение
Формат YAML чувствителен к форматированию. Следите за отступами.
Предупреждение
Версия usm_poller должна быть совместима с версией userside. Документация userside.
Если вы используете реверсивный прокси-сервер (на базе Nginx), то убедитесь, чтобы для сервиса rabbitmq были раскомментированны следующие строки:
services: rabbitmq: ports: - 127.0.0.1:15674:15674
Никаких других изменений делать не нужно. Вы можете сверяться с примером из
config-examples/docker-compose.yaml
.Пересоздать каталог с базой данных:
sudo rm -rf ./data/database sudo mkdir -p ./data/database
Запустить только сервис
postgres
:docker compose up -d postgres
И дождаться его готовности (состояния healthy) периодически просматривая состояние командой:
docker compose ps postgres
Выполнить восстановление базы данных из резервной копии, сделанной в п.2:
gunzip < ./data/backup/userside_3.17.39_....sql.gz \ | docker compose exec -T postgres psql -U userside
В ходе восстановления следить за выводом. Восстановление должно пройти без ошибок. Если есть ошибки — дальнейшие действия не выполняйте и напишите мне в телеграм.
Если вы выполняли тюнинг PostgreSQL.
Если вы изменяли переменные непосредственно в
postgresql.conf
, то перенесите их из файлаbefore_update/postgresql.conf
в новый файлdata/database/postgresql.conf
. Если для тюнинга вы использовали командыALTER SYSTEM
, то просто скопируйте файлbefore_update/postgresql.auto.conf
в каталогdata/database
. Но, так как версии PostgreSQL отличаются, лучше будет произвести тюнинг заново.Чтобы выплонить настройки заново, обратитесь к статье по тюнингу PostgreSQL. Образ erpuserside/userside:3.18-postgres основан на 15 версии PostgreSQL.
Так как на данном этапе активен только PostgreSQL (остальные контейнеры остановлены) то для внесения изменений в настройки системы путем выполнения команд
ALTER SYSTEM
вам нужно подключиться к базе данных используя утилиту psql контейнера postgres:docker compose exec postgres psql -U userside
Выполните все необходимые команды
ALTER SYSTEM
и завериште работу утилиты введя\q
(или нажав Ctrl + D).После выполнения настроек остановите контейнер с postgres:
docker compose stop postgres
Запустить набор контейнеров:
docker compose up -d
Наблюдать за ходом можно командой (выход Ctrl + C). Служба RabbitMQ может запускаться достаточно долго (около минуты) — это нормально:
docker compose logs --no-log-prefix -f userside
Журнал миграций записывается в файл
data/var/log/migrations.log,
так что можно следить за этим файлом:tail -f data/var/log/migrations.log
Больше никаких действий не требуется. Только дождаться окончания запуска (или окончания миграций). После запуска проверьте работу всех разделов системы. Если обновление прошло успешно, можно удалить каталог
before_update
, созданный в п.4sudo rm -rf before_update