For the complete documentation index, see llms.txt. This page is also available as Markdown.

Обновление Docker-контейнера

Обновление MikoPBX, запущенной в Docker или Docker Compose

Docker-контейнер MikoPBX не обновляется файлами .img или .iso. Для перехода на новую версию нужно скачать новый Docker image и пересоздать контейнер, сохранив каталоги /cf, /storage, сетевые параметры и переменные окружения.

Подготовка

  1. Создайте резервную копию настроек MikoPBX. Если модуль резервного копирования недоступен в непривилегированном контейнере, подготовьте резервное копирование каталогов или volumes на стороне Docker-хоста.

  2. Запишите имя и версию текущего image:

sudo docker inspect mikopbx --format '{{.Config.Image}}'
  1. Сохраните текущую конфигурацию контейнера:

sudo docker inspect mikopbx > mikopbx-container-before-update.json
  1. Проверьте подключения /cf и /storage:

sudo docker inspect mikopbx --format '{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}'
  1. Запишите используемые порты, network_mode, hostname и переменные окружения. Если контейнер запускается через Compose, сохраните актуальный docker-compose.yml и файл .env.

  2. Завершите активные вызовы и запланируйте техническое окно.

Обновление контейнера, запущенного командой docker run

Загрузка нового image

Для последней стабильной версии выполните:

Если используется фиксированный тег, укажите тот же registry и тег нужной версии вместо latest.

Остановка и замена контейнера

  1. Остановите контейнер:

  1. Создайте консистентную резервную копию /cf, пока контейнер остановлен. Для bind mount из примера выше можно выполнить:

Помимо /cf, новую версию стоит подстраховать бэкапом базы CDR — она лежит в /storage и при первом старте тоже может быть мигрирована. В /cf находится только mikopbx.db (настройки), а история звонков — это отдельная cdr.dbrecording_storage.db) в /storage/usbdisk1/mikopbx/astlogs/asterisk/.

Бэкап делается на остановленном контейнере (как и для /cf), чтобы база была в согласованном состоянии:

При откате восстанавливайте оба архива: сначала /cf, затем CDR - иначе история звонков и привязка записей к звонкам могут рассинхронизироваться с настройками.

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

  1. Запустите новый контейнер с теми же параметрами. Пример для установки с host network и bind mounts:

  1. Следите за запуском:

Для выхода из просмотра логов нажмите Ctrl+C — контейнер продолжит работу.

Обновление с Docker Compose

  1. Перейдите в каталог с docker-compose.yml.

  2. Если идентификаторы пользователя передаются через окружение, задайте их так же, как при первом запуске:

  1. Загрузите новый image:

  1. Пересоздайте контейнер:

  1. Проверьте состояние и логи:

Docker Compose пересоздаст контейнер, но сохранит bind mounts и именованные volumes, указанные в docker-compose.yml.

Проверка после обновления

  1. Убедитесь, что контейнер работает:

  1. Откройте web-интерфейс и проверьте версию MikoPBX.

  2. Проверьте наличие настроек и записей разговоров.

  3. Убедитесь, что телефоны и SIP-провайдеры зарегистрировались.

  4. Выполните входящий и исходящий тестовые звонки.

  5. Проверьте публикацию web-, SIP- и RTP-портов, если используется bridge network.

Откат

Если новый контейнер не запускается:

  1. Сохраните его логи:

  1. Остановите и переименуйте новый контейнер:

  1. Восстановите резервную копию /cf, созданную до обновления. Способ восстановления зависит от того, используется bind mount, именованный volume или snapshot системы хранения.

  2. Верните прежнее имя старому контейнеру и запустите его:

Для отката установки Docker Compose укажите в docker-compose.yml предыдущий тег image, восстановите предыдущее состояние /cf и снова выполните:

После успешной проверки новый контейнер можно удалить старый:

Last updated

Was this helpful?