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


Руководство по развертыванию веб-приложения 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 Developer CLI.
  • Оптимизируйте ваш процесс разработки с помощью GitHub Codespaces и GitHub Copilot.

Предпосылки

  • Учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, вы можете создать её бесплатно.
  • Azure Developer CLI установлен. Вы можете выполнить действия в Azure Cloud Shell, так как в ней уже установлен Интерфейс командной строки разработчика Azure.
  • Знание Express.js разработки.
  • (Необязательно) Чтобы попробовать GitHub Copilot, необходима учетная запись GitHub Copilot. Доступна 30-дневная бесплатная пробная версия.

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

Вы можете быстро развернуть пример приложения в этом руководстве и увидеть его выполнение в 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. Выберите main>starter-no-infra для начальной ветви. Эта ветвь содержит только пример проекта и не содержит файлов или конфигурации, связанных с Azure.
  2. Выберите Код>Создать codespace на starter-no-infra. Настройка кодового пространства занимает несколько минут.

Step 3: В терминале codespace:

  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-имени приложения.
  • Регион для физического запуска приложения в мире. Он также используется как часть DNS-имени вашего приложения.
  • Runtime stack для приложения. Здесь вы выбираете версию Node, используемую для приложения.
  • Тарифный план хостинга для приложения. Это уровень цен, который включает набор функций и возможности масштабирования для вашего приложения.
  • Группа ресурсов для приложения. Группа ресурсов позволяет вам сгруппировать (в логический контейнер) все ресурсы Azure, необходимые для приложения.

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

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

  1. Введите "web app database" в строку поиска в верхней части портала 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 — это облачная база данных, предлагающая 100% СОВМЕСТИМЫЙ API MongoDB. Обратите внимание на имя базы данных, созданное для вас (<app-name-database>). Оно понадобится вам позже.
  6. План размещения: базовый. Когда будете готовы, вы можете перейти на производственный уровень цен.
  7. Выберите Review + create.
  8. После завершения проверки нажмите кнопку "Создать".

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

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

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

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

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

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

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

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

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

Шаг 3.

  1. Выберите вкладку "Сеть".
  2. Отмена выбора включения общедоступного доступа.
  3. Выберите Создать частную конечную точку.
  4. В группе ресурсов выберите msdocs-expressjs-mongodb-tutorial.
  5. В Имя хранилища ключей введите имя, которое состоит только из букв и цифр.
  6. В регионе задайте для него образец расположения в качестве группы ресурсов.
  7. В диалоговом окне в разделе Расположение выберите то же расположение, что и для вашего приложения App Service.
  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. На странице App Service в левом меню выберите Настройки > Service Connector. Уже есть разъём, который мастер создания приложения создал для вас.
  3. Установите флажок рядом с соединителем, а затем нажмите кнопку "Изменить".
  4. На вкладке "Основные сведения" задайте для типа клиента значениеNode.js.
  5. Выберите вкладку Аутентификация.
  6. Выберите "Сохранить секрет" в Key Vault.
  7. Под Подключение к хранилищу ключей выберите Создать новое. Диалоговое окно создания подключения открывается поверх диалогового окна редактирования.

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

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

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

  1. На вкладке «Аутентификация» дождитесь создания подключения к хранилищу ключей. Когда это будет завершено, выпадающий список Key Vault Connection автоматически выберет его.
  2. Выберите Next: Networking.
  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. В Branch выберите 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_URI на process.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-адрес вашего приложения.

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

Трансляция диагностических журналов

Служба приложений 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. Нажмите кнопку "Перейти".

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

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

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

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

8. Очистите ресурсы

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

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

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

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

Шаг 3.

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

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

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

Контейнер разработчика уже содержит Azure Developer CLI (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 и каталог infra), создающие защищенную по умолчанию архитектуру со следующими ресурсами Azure:

    • Группа ресурсов: контейнер для всех созданных ресурсов.
    • План службы приложений: определяет вычислительные ресурсы для службы приложений. Создается план Linux в уровне B1.
    • App Service: представляет ваше приложение и работает в плане App Service.
    • Виртуальная сеть: интегрирована с приложением службы приложений и изолирует внутренний сетевой трафик.
    • Учетная запись Azure Cosmos DB с API MongoDB: доступна только через частную конечную точку. База данных создается для вас на сервере.
    • Кэш Azure для Redis. Доступно только из виртуальной сети.
    • Хранилище ключей: доступно только из собственного частного конечного узла. Используется для управления секретами в приложении App Service.
    • Частные конечные точки: доступ к конечным точкам для хранилища ключей, сервера базы данных и кэша 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: <URL>
     
  2. Добавьте несколько задач в список.

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

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

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

Трансляция диагностических журналов

Служба приложений 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: <URL>

Узнайте подробнее о логировании в приложениях 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, защищенному за виртуальной сетью, используя другие инструменты?

  • Для базового доступа из программы командной строки можно запустить mongosh из терминала SSH приложения. Контейнер приложения не предоставляется вместе с mongosh, поэтому его необходимо установить вручную. Помните, что установленный клиент не сохраняется во время перезапуска приложения.
  • Чтобы подключиться из клиента ГРАФИЧЕСКОго интерфейса MongoDB, компьютер должен находиться в виртуальной сети. Например, это может быть виртуальная машина Azure, подключенная к одной из подсетей, или машина в локальной сети, которая имеет соединение site-to-site 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?
  • В какой файл я внося изменения?
  • Станет ли это изменение причиной проблем при локальном запуске приложения?

Дальнейшие шаги