Поделиться через


Руководство по развертыванию веб-приложения Node.js + MongoDB в Azure

Служба приложений Azure — это высокомасштабируемая служба размещения с самостоятельной установкой исправлений на основе операционной системы Linux. В этом руководстве показано, как создать безопасное приложение Node.js в службе приложение Azure, подключенной к базе данных Azure Cosmos DB для MongoDB. По завершении вы получите приложение Express.js, работающее в Службе приложений Azure в Linux.

Снимок экрана: Node.js приложения, в котором хранятся данные в Cosmos DB.

В этом руководстве описано следующее:

  • Создайте безопасную архитектуру по умолчанию для службы приложение Azure и Azure Cosmos DB с помощью API MongoDB.
  • Защита секретов подключения с помощью управляемого удостоверения и ссылок Key Vault.
  • Разверните пример приложения Node.js для Служба приложений из репозитория GitHub.
  • Доступ к параметрам приложения Служба приложений в коде приложения.
  • Создание обновлений и повторное развертывание кода приложения.
  • Потоковая передача журналов диагностики из Служба приложений.
  • Управление приложением в портал Azure.
  • Подготовьте ту же архитектуру и разверните с помощью Интерфейса командной строки разработчика Azure.
  • Оптимизируйте рабочий процесс разработки с помощью GitHub Codespaces и GitHub Copilot.

Необходимые компоненты

Перейти к концу

Вы можете быстро развернуть пример приложения в этом руководстве и увидеть его выполнение в Azure. Просто выполните следующие команды в Azure Cloud Shell и следуйте инструкциям в командной строке:

mkdir msdocs-nodejs-mongodb-azure-sample-app
cd msdocs-nodejs-mongodb-azure-sample-app
azd init --template msdocs-nodejs-mongodb-azure-sample-app
azd up

1. Запустите пример

Сначала вы настраиваете пример приложения на основе данных в качестве отправной точки. Для удобства пример репозитория включает конфигурацию контейнера разработки. Контейнер разработки имеет все необходимое для разработки приложения, включая базу данных, кэш и все переменные среды, необходимые образцу приложения. Контейнер разработки может выполняться в пространстве кода GitHub, что означает, что вы можете запустить пример на любом компьютере с веб-браузером.

Шаг 1. В новом окне браузера:

  1. Войдите в свою учетную запись GitHub.
  2. Перейдите к https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork.
  3. Отмена выбора только для копирования основной ветви. Вы хотите, чтобы все ветви.
  4. Щелкните Создать вилку.

Шаг 2. В вилке GitHub:

  1. Выберите основную начальную>ветвь без инфраструктуры для начальной ветви. Эта ветвь содержит только пример проекта и не содержит файлов или конфигурации, связанных с Azure.
  2. Выберите пространство кода "Создать код>" на начальном экране без инфраструктуры. Пространство кода занимает несколько минут, чтобы настроить.

Шаг 3. В терминале пространства кода:

  1. Запустите npm install && npm start.
  2. Когда появится уведомление Your application running on port 3000 is available., нажмите кнопку "Открыть в браузере". Пример приложения должен отображаться на новой вкладке браузера. Чтобы остановить приложение Express.js, введите Ctrl+C.

Совет

Вы можете попросить GitHub Copilot об этом репозитории. Например:

  • @workspace Что делает этот проект?
  • @workspace Что делает папка devcontainer?

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

2. Создание Служба приложений и Azure Cosmos DB

В этом шаге вы создадите ресурсы Azure. Действия, используемые в этом руководстве, создают набор защищенных по умолчанию ресурсов, которые включают Служба приложений и Azure Cosmos DB для MongoDB. В процессе создания вы укажете следующее:

  • Имя веб-приложения. Он используется в качестве части DNS-имени приложения в виде https://<app-name>-<hash>.<region>.azurewebsites.net.
  • Регион для физического запуска приложения. Он также используется в качестве части DNS-имени приложения.
  • Стек среды выполнения для приложения. Здесь следует выбрать версию Node, которая будет использоваться для приложения.
  • План размещения для приложения. Это ценовая категория, которая включает набор функций и емкость масштабирования для вашего приложения.
  • Группа ресурсов для приложения. Группа ресурсов позволяет группировать (в логическом контейнере) все ресурсы Azure, необходимые для приложения.

Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.

Шаг 1. В портал Azure:

  1. Введите "веб-приложение база данных" в строке поиска в верхней части портала Azure.
  2. Выберите элемент с меткой Веб-приложение и база данных под заголовком Marketplace. Вы также можете перейти напрямую к мастеру создания.

Шаг 2. На странице "Создание веб-приложения + база данных " заполните форму следующим образом.

  1. Группа ресурсов: выберите "Создать" и используйте имя msdocs-expressjs-mongodb-tutorial.
  2. Регион: любой регион Azure рядом с вами.
  3. Имя: msdocs-expressjs-mongodb-XYZ, где XYZ является тремя случайными символами.
  4. Стек среды выполнения: Узел 20 LTS.
  5. Подсистема: API Cosmos DB для MongoDB. Azure Cosmos DB — это облачная база данных, предлагающая API со 100 % совместимостью с MongoDB. Запишите созданное имя базы данных (<имя-приложения>-database). Оно понадобится вам позже.
  6. План размещения: базовый. Когда вы будете готовы, вы можете масштабировать до рабочей ценовой категории.
  7. Выберите Review + create (Просмотреть и создать).
  8. После завершения проверки щелкните Создать.

Шаг 3. Развертывание занимает несколько минут. После завершения развертывания нажмите кнопку Перейти к ресурсу. Вы перейдете непосредственно в приложение Службы приложений, но будут созданы следующие ресурсы:

  • Группа ресурсов — Контейнер для всех созданных ресурсов.
  • План службы приложений — определяет вычислительные ресурсы для Службы приложений. Создается план Linux на уровне Базовый.
  • Служба приложений — представляет приложение и выполняется в плане службы приложений.
  • Виртуальная сеть — интегрирована с приложением Службы приложений и изолирует внутренний сетевой трафик.
  • Частная конечная точка — конечная точка доступа к ресурсу базы данных в виртуальной сети.
  • Сетевой интерфейс — представляет частный IP-адрес для частной конечной точки.
  • Azure Cosmos DB для MongoDB → доступ только из частной конечной точки. База данных и пользователь создаются на этом сервере.
  • Частная зона DNS зона → включает разрешение DNS сервера Azure Cosmos DB в виртуальной сети.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

3. Безопасные секреты подключения

Мастер создания создал строку подключения для вас уже в качестве параметра приложения. Однако рекомендуется сохранить секреты из Служба приложений полностью. Вы переместите секреты в хранилище ключей и измените параметр приложения на ссылку Key Vault с помощью соединителей служб.

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите переменные среды параметров>.
  2. Рядом с AZURE_COSMOS_CONNECTIONSTRING выберите "Показать значение". Это строка подключения позволяет подключиться к базе данных Cosmos DB, защищенной за частной конечной точкой. Однако секрет сохраняется непосредственно в приложении Служба приложений, что не является лучшим. Вы измените это.

Шаг 2. Создание хранилища ключей для безопасного управления секретами.

  1. В верхней строке поиска введите "хранилище ключей", а затем выберите Marketplace>Key Vault.
  2. В группе ресурсов выберите msdocs-expressjs-mongodb-tutorial.
  3. В имени хранилища ключей введите имя, состоящее только из букв и чисел.
  4. В регионе задайте для него образец расположения в качестве группы ресурсов.

Шаг 3.

  1. Перейдите на вкладку Сеть.
  2. Отмена выбора включения общедоступного доступа.
  3. Выберите "Создать частную конечную точку".
  4. В группе ресурсов выберите msdocs-expressjs-mongodb-tutorial.
  5. В имени хранилища ключей введите имя, состоящее только из букв и чисел.
  6. В регионе задайте для него образец расположения в качестве группы ресурсов.
  7. В диалоговом окне в расположении выберите то же расположение, что и приложение Служба приложений.
  8. В группе ресурсов выберите msdocs-expressjs-mongodb-tutorial.
  9. В поле Name введите msdocs-expressjs-mongodb-XYZVaultEndpoint.
  10. В виртуальной сети выберите msdocs-expressjs-mongodb-XYZVnet.
  11. В подсети msdocs-expressjs-mongodb-XYZSubnet.
  12. Нажмите ОК.
  13. Выберите Проверить и создать, а затем выберите Создать. Дождитесь завершения развертывания хранилища ключей. Должно появиться сообщение "Развертывание завершено".

Шаг 4.

  1. В верхней строке поиска введите msdocs-expressjs-mongodb, а затем ресурс Служба приложений с именем msdocs-expressjs-mongodb-XYZ.
  2. На странице Служба приложений в меню слева выберите "Параметры > соединителя службы". У вас уже есть соединитель, созданный мастером создания приложения.
  3. Установите флажок рядом с соединителем, а затем нажмите кнопку "Изменить".
  4. На вкладке "Основные сведения" задайте для типа клиента значение Node.js.
  5. Выберите вкладку Аутентификация.
  6. Выберите "Сохранить секрет" в Key Vault.
  7. В разделе "Подключение к Key Vault" выберите "Создать". Диалоговое окно создания подключения открывается поверх диалогового окна редактирования.

Шаг 5. В диалоговом окне создания подключения для подключения Key Vault:

  1. В Key Vault выберите созданное ранее хранилище ключей.
  2. Выберите Review + Create (Просмотреть и создать). Вы увидите, что управляемое удостоверение, назначаемое системой, имеет значение Selected.
  3. После завершения проверки нажмите кнопку "Создать".

Шаг 6. Вы снова в диалоговом окне редактирования для defaultConnector.

  1. На вкладке "Проверка подлинности" дождитесь создания соединителя хранилища ключей. По завершении раскрывающийся список подключения Key Vault автоматически выбирает его.
  2. Выберите Далее: сеть.
  3. Выберите " Настроить правила брандмауэра", чтобы включить доступ к целевой службе. Если появится сообщение "Нет частной конечной точки в целевой службе", игнорируйте его. Мастер создания приложения уже защитил базу данных Cosmos DB с частной конечной точкой.
  4. Выберите Сохранить. Подождите, пока появится уведомление об успешном обновлении.

Шаг 7. Проверка изменений:

  1. В меню слева снова выберите переменные среды.
  2. Рядом с параметром приложения AZURE_COSMOS_CONNECTIONSTRING выберите "Показать значение". Значение должно быть@Microsoft.KeyVault(...). Это означает, что это ссылка на хранилище ключей, так как секрет теперь управляется в хранилище ключей.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

4. Развертывание примера кода

На этом шаге вы настроите развертывание GitHub с помощью GitHub Actions. Это всего лишь один из множества способов развертывания в Службе приложений, но это также отличный способ обеспечения непрерывной интеграции в процессе развертывания. По умолчанию каждый git push из репозитория GitHub запускает действие сборки и развертывания.

Шаг 1. В меню слева выберите центр развертывания>.

Шаг 2. На странице Центра развертывания:

  1. В поле Источник выберите GitHub. По умолчанию в качестве поставщика сборки выбрано GitHub Actions.
  2. Войдите в свою учетную запись GitHub и следуйте инструкциям по авторизации Azure.
  3. В поле Организация выберите свою учетную запись.
  4. В репозитории выберите msdocs-nodejs-mongodb-azure-sample-app.
  5. В ветви выберите starter-no-infra. Это та же ветвь, в которую вы работали с примером приложения, без файлов или конфигурации, связанных с Azure.
  6. Для типа проверки подлинности выберите удостоверение, назначаемое пользователем.
  7. В меню сверху выберите Сохранить. Служба приложений фиксирует файл рабочего процесса в выбранном репозитории GitHub в каталоге .github/workflows. По умолчанию центр развертывания создает назначаемое пользователем удостоверение для рабочего процесса для проверки подлинности с помощью Microsoft Entra (проверка подлинности OIDC). Дополнительные сведения о вариантах проверки подлинности см. в статье "Развертывание в Служба приложений с помощью GitHub Actions".

Шаг 3. Вернитесь в пространство кода GitHub примера вилки, выполните команду git pull origin starter-no-infra. Это извлекает только что зафиксированный файл рабочего процесса в пространство кода.

Шаг 4 (вариант 1: с GitHub Copilot):

  1. Запустите новый сеанс чата, выбрав представление чата, а затем выберите +.
  2. Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может указывать на файл app.js и mongoose.connect вызов.
  3. Скажем: "*У меня есть переменная строка подключения в Azure с именем AZURE_COSMOS_CONNECTIONSTRING.". Copilot может дать вам предложение кода, аналогичное варианту 2: без шагов GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в app.js.
  4. Откройте app.js в обозревателе и добавьте предложение кода в getApp метод. GitHub Copilot не дает вам одинаковый ответ каждый раз, вам может потребоваться задать дополнительные вопросы, чтобы точно настроить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".

Шаг 4 (вариант 2: без GitHub Copilot):

  1. В обозревателе откройте app.js.
  2. Найдите строку, в которой mongoose.connect вызывается (строка 16) и перейдите на process.env.MONGODB_URIprocess.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI.

Шаг 5.

  1. Выберите расширение Система управления версиями.
  2. В текстовом поле введите сообщение фиксации, например Update environment variable. Кроме того, выберите и позвольте GitHub Copilot создать сообщение о фиксации.
  3. Нажмите кнопку "Зафиксировать", а затем подтвердите значение "Да".
  4. Нажмите кнопку "Синхронизировать изменения 1", а затем нажмите кнопку "ОК".

Шаг 6. Назад на странице Центра развертывания в портал Azure:

  1. На вкладке "Журналы" выберите "Обновить". Новый запуск развертывания уже запущен из зафиксированных изменений.
  2. В элементе журнала для запуска развертывания выберите запись "Сборка и развертывание журналов " с последней меткой времени.

Шаг 7. Вы перейдете в репозиторий GitHub и увидите, что действие GitHub выполняется. Файл рабочего процесса определяет два отдельных этапа: сборку и развертывание. Дождитесь, пока в выполнении действия GitHub не будет показано состояние Завершено.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

5. Перейдите к приложению

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите Обзор.
  2. Выберите URL-адрес своего приложения. Также можно перейти непосредственно по адресу https://<app-name>.azurewebsites.net.

Шаг 2. Добавление нескольких задач в список. Вы запустили безопасное управляемое данными приложение Node.js в Службе приложений Azure.

6. Потоковая передача журналов диагностики

Служба приложений Azure захватывает все сообщения, выводимые на консоль, чтобы помочь в диагностике проблем приложения. Пример приложения выводит сообщения журнала консоли в каждой из своих конечных точек для демонстрации этой возможности. Например, конечная точка get выводит сообщение о количестве задач, полученных из базы данных, и если что-то идет не так, появляется сообщение об ошибке.

router.get('/', function(req, res, next) {
  Task.find()
    .then((tasks) => {      
      const currentTasks = tasks.filter(task => !task.completed);
      const completedTasks = tasks.filter(task => task.completed === true);

      console.log(`Total tasks: ${tasks.length}   Current tasks: ${currentTasks.length}    Completed tasks:  ${completedTasks.length}`)
      res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
    })
    .catch((err) => {
      console.log(err);
      res.send('Sorry! Something went wrong.');
    });
});

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите Журналы службы приложений.
  2. Под элементом Ведение журнала приложения выберите Файловая система.
  3. В меню сверху выберите Сохранить.

Шаг 2. В меню слева выберите поток журналов. Вы увидите журналы для своего приложения, включая журналы платформы и журналы из контейнера.

7. Проверка развернутых файлов с помощью Kudu

Служба приложений Azure предоставляет веб-консоль диагностики с именем Kudu, которая позволяет проверять среду размещения сервера для веб-приложения. С помощью Kudu можно просматривать файлы, развернутые в Azure, проверять журнал развертывания приложения и даже открыть сеанс SSH в среде размещения.

Шаг 1. На странице Служба приложений:

  1. В меню слева выберите Дополнительные инструменты.
  2. Выберите Выполнить. Также можно перейти непосредственно по адресу https://<app-name>.scm.azurewebsites.net.

Шаг 2. На странице Kudu выберите "Развертывания".

Если вы развертываете код для Служба приложений с помощью Git или ZIP-развертывания, вы увидите журнал развертываний веб-приложения.

Шаг 3. Вернитесь на домашнюю страницу Kudu и выберите сайт wwwroot.

Вы можете увидеть развернутую структуру папок и выбрать, чтобы просмотреть и просмотреть файлы.

8. Очистка ресурсов

По завершении работы можно удалить все ресурсы из вашей подписки Azure, удалив соответствующую группу ресурсов.

Шаг 1. В строке поиска в верхней части портал Azure:

  1. Введите имя группы ресурсов.
  2. Выберите группу ресурсов.

Шаг 2. На странице группы ресурсов выберите "Удалить группу ресурсов".

Шаг 3.

  1. Введите имя группы ресурсов для подтверждения удаления.
  2. Выберите команду Удалить.

Снимок экрана: диалоговое окно подтверждения для удаления группы ресурсов на портале Azure. :

2. Создание ресурсов Azure и развертывание примера приложения

На этом шаге вы создадите ресурсы Azure и развернете пример приложения для Служба приложений в Linux. Действия, используемые в этом руководстве, создают набор безопасных ресурсов по умолчанию, которые включают Служба приложений и Azure Cosmos DB.

Контейнер разработки уже имеет интерфейс командной строки разработчика Azure (AZD).

  1. Выполните команду azd initиз корневого каталога репозитория.

    azd init --template nodejs-app-service-cosmos-redis-infra
    
  2. При появлении запроса укажите следующие ответы:

    Вопрос Ответ
    Текущий каталог не пуст. Вы хотите инициализировать проект здесь в каталоге<>? Y
    Что вы хотите сделать с этими файлами? Сохранение существующих файлов без изменений
    Введите новое имя среды Введите уникальное имя. Шаблон AZD использует это имя как часть DNS-имени веб-приложения в Azure (<app-name>-<hash>.azurewebsites.net). Разрешены буквенно-цифровые символы и дефисы.
  3. Войдите в Azure, выполнив azd auth login команду и выполнив следующую команду:

    azd auth login
    
  4. Создайте необходимые ресурсы Azure и разверните код приложения с azd up помощью команды. Следуйте запросу, чтобы выбрать нужную подписку и расположение для ресурсов Azure.

    azd up
    

    Выполнение azd up команды занимает около 15 минут (кэш Redis занимает больше всего времени). Он также компилирует и развертывает код приложения, но вы измените код позже, чтобы работать с Служба приложений. Во время выполнения команда предоставляет сообщения о процессе подготовки и развертывания, включая ссылку на развертывание в Azure. По завершении команда также отображает ссылку на приложение развертывания.

    Этот шаблон AZD содержит файлы (azure.yaml и инфракрасныйкаталог), создающие безопасную архитектуру по умолчанию со следующими ресурсами Azure:

    • Группа ресурсов: контейнер для всех созданных ресурсов.
    • Служба приложений план. Определяет вычислительные ресурсы для Служба приложений. Создается план Linux на уровне B1 .
    • Служба приложений. Представляет приложение и запускается в плане Служба приложений.
    • Виртуальная сеть: интегрированная с приложением Служба приложений и изолирует внутренний сетевой трафик.
    • Учетная запись Azure Cosmos DB с API MongoDB: доступна только за частной конечной точкой. База данных создается для вас на сервере.
    • Кэш Azure для Redis. Доступно только из виртуальной сети.
    • Хранилище ключей: доступно только из своей частной конечной точки. Используется для управления секретами для приложения Служба приложений.
    • Частные конечные точки: доступ к конечным точкам для хранилища ключей, сервера базы данных и кэша Redis в виртуальной сети.
    • Частная зона DNS зонах: включите разрешение DNS базы данных Cosmos DB, кэш Redis и хранилище ключей в виртуальной сети.
    • Рабочая область Log Analytics: выступает в качестве целевого контейнера для вашего приложения для отправки журналов, где можно также запрашивать журналы.

    Когда команда завершит создание ресурсов и развертывание кода приложения в первый раз, развернутое пример приложения еще не работает, так как необходимо внести небольшие изменения, чтобы подключиться к базе данных в Azure.

3. Проверка строка подключения

Шаблон AZD, который вы используете, создали переменные подключения для вас уже в качестве параметров приложения и выводит их в терминал для удобства. Параметры приложения — это один из способов сохранения секретов подключения из репозитория кода.

  1. В выходных данных AZD найдите параметр AZURE_COSMOS_CONNECTIONSTRINGприложения. Отображаются только имена параметров. Они выглядят следующим образом в выходных данных AZD:

     App Service app has the following app settings:
             - AZURE_COSMOS_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     

    AZURE_COSMOS_CONNECTIONSTRINGсодержит строка подключения в базу данных Cosmos DB в Azure. Позже его необходимо использовать в коде.

  2. Для удобства шаблон AZD отображает прямую ссылку на страницу параметров приложения. Найдите ссылку и откройте ее на новой вкладке браузера.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

4. Изменение примера кода и повторное развертывание

  1. В пространстве кода GitHub запустите новый сеанс чата, щелкнув представление чата , а затем щелкните +.

  2. Спросите: "@workspace Как приложение подключается к базе данных?". Copilot может указывать на файл app.js и mongoose.connect вызов.

  3. Скажите: "У меня есть переменная строка подключения в Azure с именем AZURE_COSMOS_CONNECTIONSTRING.". Copilot может дать вам предложение кода, аналогичное варианту 2: без шагов GitHub Copilot ниже и даже сообщить вам, чтобы внести изменения в app.js.

  4. Откройте app.js в обозревателе и добавьте предложение кода в getApp метод.

    GitHub Copilot не дает вам одинаковый ответ каждый раз, вам может потребоваться задать дополнительные вопросы, чтобы точно настроить его ответ. Советы см. в статье "Что можно сделать с помощью GitHub Copilot в моем пространстве кода?".

  5. Вернитесь в терминал пространства кода, выполните команду azd deploy.

    azd deploy
    

Совет

Вы также можете использовать azd up всегда, что делает все azd package, azd provisionи azd deploy.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

5. Перейдите к приложению

  1. В выходных данных AZD найдите URL-адрес приложения и перейдите к нему в браузере. URL-адрес выглядит следующим образом в выходных данных AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
     
  2. Добавьте несколько задач в список.

    Снимок экрана: веб-приложение Express.js с Cosmos DB, выполняющееся в Azure с отображением задач.

    Поздравляем, вы запускаете веб-приложение в службе приложение Azure с безопасным подключением к Azure Cosmos DB.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

6. Потоковая передача журналов диагностики

Служба приложений Azure захватывает все сообщения, выводимые на консоль, чтобы помочь в диагностике проблем приложения. Пример приложения выводит сообщения журнала консоли в каждой из своих конечных точек для демонстрации этой возможности. Например, конечная точка get выводит сообщение о количестве задач, полученных из базы данных, и если что-то идет не так, появляется сообщение об ошибке.

router.get('/', function(req, res, next) {
  Task.find()
    .then((tasks) => {      
      const currentTasks = tasks.filter(task => !task.completed);
      const completedTasks = tasks.filter(task => task.completed === true);

      console.log(`Total tasks: ${tasks.length}   Current tasks: ${currentTasks.length}    Completed tasks:  ${completedTasks.length}`)
      res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
    })
    .catch((err) => {
      console.log(err);
      res.send('Sorry! Something went wrong.');
    });
});

В выходных данных AZD найдите ссылку для потоковой передачи журналов Служба приложений и перейдите к нему в браузере. Ссылка выглядит следующим образом в выходных данных AZD:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Узнайте больше о ведении журнала в приложениях Java в серии о включении Azure Monitor OpenTelemetry для приложений .NET, Node.js, Python и Java.

Возникли проблемы? Ознакомьтесь с разделом "Устранение неполадок".

7. Очистка ресурсов

Чтобы удалить все ресурсы Azure в текущей среде развертывания, выполните azd down и следуйте инструкциям.

azd down

Устранение неполадок

В представлении развертывания портала для Azure Cosmos DB отображается состояние конфликта

В зависимости от выбранной подписки и выбранного региона может появиться состояние развертывания Azure Cosmos DB Conflictсо следующим сообщением в разделе "Сведения об операциях".

Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.

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

На странице браузера развернутого приложения говорится: "Что-то пошло не так".

Возможно, вам по-прежнему нужно внести строка подключения изменения в коде приложения. См . 4. Разверните пример кода.

Часто задаваемые вопросы

Сколько стоит такая конфигурация?

Цены на созданные ресурсы приведены следующим образом:

  • План службы приложений создается на уровне Базовый, и его можно масштабировать вверх или вниз. См. цены на Службу приложений.
  • Сервер Azure Cosmos DB создается в одном регионе и может быть распределен по другим регионам. См. страницу цен на Azure Cosmos DB.
  • Плата за виртуальную сеть не взимается, если только вы не настроите дополнительные функциональные возможности, такие как пиринг. См. цены на виртуальные сети Azure.
  • За частную зону DNS взимается небольшая плата. См. цены на Azure DNS.

Разделы справки подключиться к серверу Azure Cosmos DB, защищенному за виртуальной сетью с другими инструментами?

  • Для базового доступа из программы командной строки можно запустить mongosh из терминала SSH приложения. Контейнер приложения не предоставляется вместе с mongosh, поэтому его необходимо установить вручную. Помните, что установленный клиент не сохраняется во время перезапуска приложения.
  • Чтобы подключиться из клиента MongoDB с графическим пользовательским интерфейсом, компьютер должен находиться в соответствующей виртуальной сети. Например, это может быть виртуальная машина Azure, подключенная к одной из подсетей, или компьютер в локальной сети с VPN-подключением типа "сеть — сеть" к виртуальной сети Azure.
  • Чтобы подключиться из оболочки MongoDB на странице управления Azure Cosmos DB на портале, компьютер также должен находиться в виртуальной сети. Вместо этого можно открыть брандмауэр сервера Azure Cosmos DB для IP-адреса локального компьютера, но он увеличивает область атаки для конфигурации.

Как осуществляется разработка локальных приложений с использованием GitHub Actions?

Возьмем автоматически созданный файл рабочего процесса из Службы приложений в качестве примера, где каждый git push запускает новый прогон сборки и развертывания. Из локального клона репозитория GitHub вы вносите необходимые обновления в GitHub. Например:

git add .
git commit -m "<some-message>"
git push origin main

Почему развертывание GitHub Actions идет так медленно?

Автоматически созданный файл рабочего процесса из Службы приложений определяет прогон из двух заданий — сначала сборка, потом развертывание. Так как каждое задание выполняется в собственной чистой среде, файл рабочего процесса гарантирует, что задание deploy имеет доступ к файлам из задания build:

Большая часть времени, затрачиваемого процессом из двух заданий, уходит на отправку и скачивание артефактов. При желании файл рабочего процесса можно упростить, объединив два задания в одно, что устраняет необходимость в шагах отправки и скачивания.

У меня нет разрешений на создание удостоверения, назначаемого пользователем

См. статью "Настройка развертывания GitHub Actions" из Центра развертывания.

Что можно сделать с помощью GitHub Copilot в моем пространстве кода?

Вы можете заметить, что представление чата GitHub Copilot уже было там, когда вы создали пространство кода. Для удобства мы добавим расширение чата GitHub Copilot в определение контейнера (см . статью .devcontainer/devcontainer.json). Однако вам нужна учетная запись GitHub Copilot (доступна бесплатная пробная версия 30 дней).

Несколько советов для вас при разговоре с GitHub Copilot:

  • В одном сеансе чата вопросы и ответы создаются друг на друга, и вы можете настроить свои вопросы, чтобы точно настроить ответ, который вы получаете.
  • По умолчанию GitHub Copilot не имеет доступа к файлу в репозитории. Чтобы задать вопросы о файле, сначала откройте файл в редакторе.
  • Чтобы разрешить GitHub Copilot получить доступ ко всем файлам в репозитории при подготовке его ответов, начните с вашего вопроса @workspace. Дополнительные сведения см. в разделе Use the @workspace agent.
  • В сеансе чата GitHub Copilot может предложить изменения и (с @workspace) даже там, где внести изменения, но не разрешено вносить изменения. Это до вас, чтобы добавить предлагаемые изменения и проверить его.

Вот некоторые другие вещи, которые вы можете сказать, чтобы точно настроить ответ, который вы получаете:

  • @workspace Где определяется MONGODB_URI?
  • В какой файл я внося изменения?
  • Изменится ли это изменение при локальном запуске приложения?

Следующие шаги