Appearance
Обновление Docker all-in-one до Nextbox 1.12
Инструкция предназначена для прежнего контейнера all-in-one. Для установки из нескольких контейнеров используйте переход Docker Compose с 1.11 до 1.12.
Образ nextbox-docker.ptnl.moscow/nextbox/nextbox-all-in-one:1.12.0 выпускается только для amd64 (x86_64). Обновление допускает остановку сервисов.
Переход с 1.11: автоматическая замена контейнера
Старый контейнер должен работать и иметь записываемый том или bind mount в /var/nextbox. Не удаляйте его перед переносом: ключи 1.11 находятся в /etc/nextbox/config.yml внутри старого контейнера, а не в томе данных.
Укажите имя старого контейнера вместо nextbox:
bash
docker run --rm --pull always --platform linux/amd64 \
-v /var/run/docker.sock:/var/run/docker.sock \
--entrypoint /usr/bin/nextbox-upgrade \
nextbox-docker.ptnl.moscow/nextbox/nextbox-all-in-one:1.12.0 \
docker-all-in-one nextboxПомощник читает фактическую конфигурацию через старые бинарники и переносит ключи, DSN, настройки и пути данных в /var/nextbox/config/core.yml. Новый Core проверяет конфигурацию до остановки старого контейнера. Затем помощник заменяет контейнер, сохраняя его имя, порты, тома, окружение, сети и политику перезапуска. Старый контейнер удаляется после получения статуса healthy у нового. Основной контейнер работает без Docker socket.
Бэкапы и копии пользовательских данных не создаются. Очереди RabbitMQ не переносятся отдельно. Некорректные ключи, несовместимые общие подключения, нестандартные команды запуска и включённые старые security-адаптеры блокируют автоматическое обновление до остановки старого контейнера.
Если ошибка возникла после запуска нового Core, прежний контейнер остаётся остановленным. Автоматического отката миграций БД нет.
Если контейнером управлял Compose, обновите образ в его YAML, чтобы следующий запуск Compose использовал 1.12.
Переход с 1.11: перенос при обычном старте
Этот вариант не требует подключения Docker socket. Пока старый контейнер существует, сохраните его конфигурацию в том данных:
bash
docker exec --user root nextbox sh -ec '
mkdir -p /var/nextbox/config
chmod 0700 /var/nextbox/config
cp /etc/nextbox/config.yml /var/nextbox/config/config.yml
chmod 0600 /var/nextbox/config/config.yml
'Затем остановите старый контейнер и замените его новым образом, сохранив прежние тома, порты, сети и окружение. Не запускайте старый и новый контейнеры одновременно на одном томе PostgreSQL.
При каждом старте entrypoint вызывает помощник без отдельного флага:
- Если
core.ymlуже существует, помощник ничего не меняет. - Если
core.ymlотсутствует, но есть/var/nextbox/config/config.ymlили/etc/nextbox/config.yml, помощник преобразует старые настройки, учитывает прежние переменныеPOTENTIAL_*и проверяет результат новым Core. После успешной проверки записываетcore.ymlи запускает службы. - Если нет обоих конфигов и существующей базы, выполняется новая установка. Существующая база без конфигурации блокирует запуск, чтобы не создать новые ключи для старых данных.
Старый конфиг также можно подключить read-only в /etc/nextbox/config.yml. При ошибке преобразования или проверки службы не запускаются, исходный конфиг сохраняется.
Последующие обновления 1.12
Загрузите выбранный новый образ и пересоздайте контейнер с прежними томами, портами, сетями и окружением. Существующий /var/nextbox/config/core.yml сохраняется, повторный перенос не выполняется. Не заменяйте действующие ключи значениями из примеров и не удаляйте том данных при замене контейнера.
Проверка после обновления
bash
docker inspect --format '{{.State.Health.Status}}' nextbox
docker exec nextbox wget -q -O- http://127.0.0.1:6005/readyz
docker logs nextboxДождитесь healthy, затем проверьте вход со старой учётной записью, доступ к прежним файлам, загрузку нового файла и используемые расширения.