---
title: "nb app upgrade"
description: "Справочник по команде nb app upgrade: остановка приложения, замена сохранённых исходников или образа, а затем выполнение обновления и запуска выбранного приложения NocoBase."
keywords: "nb app upgrade,NocoBase CLI,обновление,апгрейд,Docker-образ"
---

# nb app upgrade

Обновление выбранного приложения NocoBase. CLI сначала останавливает текущее приложение, по умолчанию заменяет сохранённые исходники или образ, синхронизирует коммерческие плагины, выполняет обновление и запуск приложения, а в конце обновляет runtime env. Docker env во время запуска пересоздают контейнер приложения из сохранённой конфигурации env.

## Использование

```bash
nb app upgrade [flags]
```

## Параметры

| Параметр | Тип | Описание |
| --- | --- | --- |
| `--env`, `-e` | string | Имя CLI env для обновления; если не указано, используется текущий env |
| `--yes`, `-y` | boolean | Если явно переданный `--env` указывает на env, отличающуюся от текущей env, пропускает интерактивное подтверждение |
| `--force`, `-f` | boolean | Пропускает подтверждение обновления. В неинтерактивных терминалах и сессиях AI-агента этот флаг нужно передавать явно |
| `--skip-download`, `-s` | boolean | Пропустить загрузку исходников или образа и выполнить поток обновления и запуска на основе уже сохранённых локальных исходников или Docker-образа; также пропускает `nb license plugins sync` |
| `--version` | string | Переопределяет целевую версию этого обновления; после успешного выполнения новая версия будет записана в `downloadVersion` конфигурации env |
| `--verbose` | boolean | Показать вывод низкоуровневых команд обновления и перезапуска |

## Примеры

```bash
nb app upgrade
nb app upgrade --force
nb app upgrade --env local
nb app upgrade --env local --force
nb app upgrade --env local --skip-download
nb app upgrade --env local --skip-download --version beta
nb app upgrade --env local --version beta
nb app upgrade --env local --verbose
nb app upgrade --env local-docker --skip-download
```

Если вы явно передаёте `--env`, и она отличается от текущей env, CLI сначала запросит подтверждение. В неинтерактивных терминалах или сессиях AI-агента добавьте `--yes` самостоятельно либо сначала выполните `nb env use <name>`, а затем повторите попытку.

Перед фактическим началом обновления интерактивный терминал также запросит дополнительное подтверждение обновления, если только вы явно не передали `--force`. В неинтерактивных терминалах и сессиях AI-агента `nb app upgrade` откажется продолжать без `--force` и выведет команду для повторного запуска, которую можно сразу скопировать. Если это ещё и cross-env операция, понадобятся и `--yes`, и `--force`.

По умолчанию `nb app upgrade` выполняет следующие шаги:

1. `nb app stop`
2. `nb source download --replace`
3. `nb license plugins sync --skip-if-no-license`
4. `nb app start`
5. Сохранить новую `downloadVersion`, если нужно
6. `nb env update`

Если передан `--skip-download`, CLI пропускает шаги 2 и 3 и сразу выполняет поток обновления и запуска на основе текущих сохранённых исходников или образа. Если также передан `--version`, CLI не будет загружать эту версию в рамках этого запуска, а только сохранит её как новую `downloadVersion` после успешного запуска, чтобы будущие обновления могли её использовать.

На шаге 4 CLI автоматически выполнит необходимую подготовку обновления для текущего состояния кода, а затем будет ждать, пока приложение не пройдёт `__health_check`. Во время ожидания CLI сначала выводит одну строку ожидания, а затем одну строку прогресса каждые 10 секунд, пока приложение не будет готово или пока health check не достигнет таймаута.

Если последний шаг `nb env update` завершится ошибкой, обновление всё равно считается успешным. CLI выведет предупреждение и попросит затем вручную выполнить `nb env update <envName>`.

## Hook-скрипты

Если текущий env сохранил hook через `nb init --hook-script`, `nb app upgrade` передает hook lifecycle upgrade. Для source npm/Git обновление source запускает `beforeDependencyInstall(context)` перед установкой зависимостей с `context.phase = 'upgrade'` и `context.command = 'app:upgrade'`.

Затем шаг запуска upgrade приложения выполняет `beforeAppInstall(context)`, а после старта приложения и успешного `__health_check` выполняет `afterAppStart(context)`. Оба hook также используют `context.phase = 'upgrade'` и `context.command = 'app:upgrade'`. Docker source не запускает `beforeDependencyInstall`, но запускает hooks уровня приложения.

## Связанные команды

- [`nb source download`](../source/download.md)
- [`nb app restart`](./restart.md)
- [`nb self update`](../self/update.md)
