Перейти к содержанию

Обновление Docker-образа Angie с версии 4.x на 5.x

Обратите внимание

Выполняйте эту процедуру только в том случае, если каталоги состояния ноды /opt/wallarm/etc/wallarm и/или /var/log/wallarm монтируются с хоста с помощью -v.
Если эти каталоги не монтируются с хоста, как показано в примерах установки в этой документации, обновите Angie стандартным способом.

Образ 5.x собран на другом базовом образе, поэтому файлы, оставшиеся от 4.x в этих каталогах, становятся несовместимыми. Служебные процессы не могут записывать данные в свои каталоги логов и не запускаются.

При этом контейнер остаётся в состоянии Up: ошибок завершения контейнера нет, а последней строкой в логе остаётся:

Waiting for Tarantool to be available at 127.0.0.1:3313

Обновление

Шаг 1. Определите каталоги хоста, примонтированные в контейнер

Получите список монтирований работающего контейнера:

docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{"\n"}}{{end}}' <имя_контейнера>

Из левой колонки выпишите пути на хосте, соответствующие двум каталогам состояния ноды, указанным выше.

Обратите внимание

Конфигурация Angie, сертификаты и CA-бандл к состоянию ноды не относятся и переносятся без изменений.

Шаг 2. Остановите и удалите контейнер версии 4.x

Выполните:

docker stop <имя_контейнера>
docker rm <имя_контейнера>

Шаг 3. Удалите указанные каталоги и создайте их заново

Удалите каталоги, которые вы определили на предыдущем шаге, и создайте их заново пустыми.
В командах ниже указаны примеры путей – замените их на свои:

rm -rf /srv/wallarm/etc /srv/wallarm/log
mkdir -p /srv/wallarm/etc /srv/wallarm/log
chmod 777 /srv/wallarm/etc /srv/wallarm/log

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

Шаг 4. Запустите контейнер новой версии

Запустите контейнер новой версии той же командой, которая использовалась ранее для запуска, заменив тег образа на 5.x и сохранив прежние параметры -v и -e:

    docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -e WALLARM_API_HOST='api.webmonitorx.ru' -v /configs/default:/etc/angie/http.d/default.conf -p 80:80 registry.webmonitorx.ru/public/meganode:5.x

Успешный запуск можно проверить по строке 127.0.0.1:3313 is available в docker logs <имя_контейнера>.

Обратите внимание

При удалении каталога состояния удаляется и регистрация ноды. Поэтому при запуске необходимо передать WALLARM_API_TOKEN. В противном случае контейнер завершится с ошибкой ERROR: no WALLARM_API_TOKEN and no private key. Нода зарегистрируется заново и получит новый UUID.