Руководство по развертыванию веб-приложения 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.
  • Acces Служба приложений параметры приложения в коде приложения.
  • Создание обновлений и повторное развертывание кода приложения.
  • Потоковая передача журналов диагностики из Служба приложений.
  • Управление приложением в портал 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. Щелкните Создать вилку.

Снимок экрана: создание вилка примера репозитория GitHub.

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

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

Снимок экрана: создание пространства кода в GitHub.

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

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

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

Совет

Вы можете попросить 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. Выберите Сохранить. Подождите, пока появится уведомление об успешном обновлении.

Снимок экрана: подключение хранилища ключей, выбранное в параметре defaultConnector.

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

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

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

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

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".

Снимок экрана: настройка CI/CD с помощью GitHub Actions.

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

Снимок экрана: извлечение git в пространстве кода GitHub.

Шаг 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 в моем пространстве кода?".

Снимок экрана, показывающий, как задать вопрос в новом сеансе чата 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.

Снимок экрана: пространство кода GitHub и открытие app.js.

Шаг 5.

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

Снимок экрана: фиксация изменений и отправка на GitHub.

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

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

Снимок экрана: успешное развертывание на странице журналов центра развертывания.

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

Снимок экрана: успешный запуск GitHub.

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

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

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

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

Снимок экрана: запуск Службы приложений с портала Azure.

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

Снимок экрана: приложение Express.js, выполняющееся в Службе приложений.

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. В меню сверху выберите Сохранить.

Снимок экрана: включение собственных журналов в Службе приложений на портале Azure.

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

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

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

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

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

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

Снимок экрана: переход на страницу Kudu Службы приложений.

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

Снимок экрана: главная страница приложения Kudu SCM, на которой показана различная информация о среде размещения.

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

Снимок экрана: журнал развертывания приложения Службы приложений в формате JSON.

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

Снимок экрана: выбор

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

Снимок экрана: развернутые файлы в каталоге wwwroot.

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

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

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

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

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

Шаг 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?
  • В какой файл я внося изменения?
  • Изменится ли это изменение при локальном запуске приложения?

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