Пример проекта с Docker Runtime

Если вы хотите развернуть приложение на управляемой платформе, выбрав среду выполнения, служба приложений — правильный выбор. Вы можете создать приложение-функцию, веб-приложение, приложение логики и т. д. в службах приложений Azure. Когда дело доходит до Vue с серверной частью NodeJS, вы можете создавать и развертывать несколькими способами, и служба приложений Azure является одним из них.

В этом посте мы собираемся развернуть приложение Vue с бэкэндом nodejs в среде выполнения Docker. Во-первых, мы помещаем наше приложение в докер, отправляем этот образ в реестр контейнеров Azure и запускаем это приложение в службах приложений Azure. Вы можете выбрать среду выполнения NodeJS или докеризировать ее и развернуть в среде выполнения Docker. Образы Docker можно получить из Docker Hub, ACR и т. д.

  • Необходимые условия
  • Пример проекта
  • Докеризация проекта
  • Запуск API в Docker
  • Отправка образа Docker в ACR
  • Разверните его в службе приложений
  • Демо
  • Сводка
  • Заключение

Предпосылки

  • Если вы новичок в Vue.js, перейдите по ссылке ниже, чтобы узнать, как разрабатывать и создавать проект Vue.js с бэкендом NodeJS.

Как разработать и собрать приложение Vue.js с помощью NodeJS

Другими обязательными условиями для этого поста являются основы Docker. Мы не собираемся обсуждать основы, такие как контейнер или Docker. Ниже приведены предварительные условия, которые вы должны знать, прежде чем читать эту статью.

Основы докера

Вам необходимо понимать концепции Docker, такие как создание образов, управление контейнерами и т. д. Ниже приведены некоторые ссылки, которые вы можете понять о Docker, если вы новичок.

Учетная запись Microsoft Azure

У вас должна быть учетная запись Microsoft Azure. Вы можете получить бесплатную учетную запись на один год. После входа в систему вы должны увидеть показанный ниже экран.

Вам необходимо создать подписку для своей учетной записи. Наиболее распространенной является подписка Pay As You Go.

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

Пример проекта

Это простой проект, демонстрирующий разработку и запуск приложения Vue с помощью NodeJS. У нас есть простое приложение, в котором мы можем добавлять пользователей, подсчитывать и отображать их сбоку, а также получать их в любое время.

Если вы хотите попрактиковаться, вот ссылка Github на этот проект. Вы также можете клонировать его и запустить на своем компьютере.

// clone the project
git clone https://github.com/bbachi/vuejs-nodejs-example.git
// strat the api
cd api
npm install
npm run dev
// start the react app
cd my-app
npm install
npm run serve

Докеризация проекта

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

Вот Dockerfile, и он использует многоэтапные сборки для уменьшения размера образа и поверхностных атак.

Вот команды для создания образа и запуска его на движке Docker на вашем локальном компьютере. Если вы новичок в Docker, посмотрите этот подробный пост на эту тему. Убедитесь, что ваш сервер NodeJS работает на порту 80.

// build the image
docker build -t vue-node-ui .
// list the image you just built
docker images

Запуск API в Docker

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

// run the container
docker run -d -p 80:3080 --name vue-node-ui vue-node-ui
// list the container
docker ps
// logs
docker logs vue-node-ui
// exec into running container
docker exec -it vue-node-ui /bin/sh

Вы можете видеть, что приложение работает на порту 80.

Отправка образа Docker в ACR

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

Убедитесь, что ваше приложение работает на порту 80, прежде чем создавать образ, изменив команду запуска.

Сначала создадим группу ресурсов с именем rg-appservices-demo с помощью следующей команды.

// create a resource group
az group create --name rg-appservices-demo --location westus

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

Давайте дадим основные детали на экране создания и нажмите кнопку «Создать».

После просмотра и создания вы увидите следующий экран.

Вы можете увидеть главную страницу реестра контейнеров ниже.

Вы можете сделать то же самое с Azure CLI с помощью следующих команд. Перед выполнением приведенных ниже команд убедитесь, что вы вошли в свою учетную запись Azure с помощью CLI с помощью этой команды az login.

// create a resource group
az group create --name rg-appservices-demo --location westus
// create a container registry
az acr create --resource-group rg-appservices-demo \
  --name frontendapp --sku Basic

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

az acr build --image appdemo/frontend-app:v1 \
  --registry frontendapp \
  --file Dockerfile .

Вы увидите вывод ниже.

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

Если вы хотите извлечь этот репозиторий, вам нужно использовать эту команду.

docker pull frontendapp.azurecr.io/appdemo/frontend-app:v1

Разверните его в службе приложений

Вам необходимо создать службу веб-приложения перед развертыванием в ней образа Docker. Сделаем это с порталом. Вам нужно перейти в Службы приложений и создать веб-приложение со средой выполнения Docker, как показано ниже. Убедитесь, что вы выбрали правильную группу ресурсов.

На следующем экране вам нужно предоставить информацию о Docker. Мы отправили образ Docker в ACR, и нам нужно предоставить эти данные.

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

az acr update -n frontendapp --admin-enabled true

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

Как только вы нажмете кнопку «Создать», вы увидите экран успешного развертывания.

Нажмите кнопку «Перейти к ресурсу» и найдите URL-адрес ниже.

Демо

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

https://app-frontend1.azurewebsites.net/

Резюме

  • Если вы хотите развернуть приложение на управляемой платформе, выбрав среду выполнения, служба приложений — правильный выбор.
  • Вы можете выбрать среду выполнения NodeJS или докеризировать ее и развернуть в среде выполнения Docker. Образы Docker можно получить из Docker Hub, ACR и т. д.
  • Служба приложений Azure работает с любым реестром Docker, таким как Docker Hub и т. д.
  • Перед созданием образа убедитесь, что ваше приложение работает на порту 80.
  • Учетная запись администратора по умолчанию отключена, и вам необходимо включить ее для доступа к изображениям ACR из служб приложений.

Вывод

Мы увидели, как создать приложение Vue с серверной частью NodeJS и развернуть его в службах приложений Azure с помощью среды выполнения Docker. В следующем посте мы увидим более продвинутые варианты использования, такие как шлюз API, аутентификация, настройка переменных среды и т. д.