Пошаговое руководство с примером проекта с Docker Runtime

Если вы хотите развернуть приложение на управляемой платформе, выбрав среду выполнения, AWS App Runner - правильный выбор. Вы можете запускать все WebApp со средой выполнения Docker, не беспокоясь о конфигурации с вашей стороны. AWS App Runner - это сервис AWS, который обеспечивает быстрый, простой и экономичный способ развертывания прямо из исходного кода или образа контейнера непосредственно в масштабируемое и безопасное веб-приложение в облаке AWS.

Вы можете закрепить Angular с помощью Java Backend и развернуть его в среде выполнения Docker. Образы Docker можно извлечь из ECR и т. Д. В этом посте мы увидим, как запускать Angular с Java Backend со средой выполнения Docker на AWS App Runner.

  • Предварительные требования
  • Пример проекта
  • Dockerize проекта
  • Запуск веб-приложения в Docker
  • Отправка образа Docker в ECR
  • Создание службы запуска приложений
  • Тестирование веб-приложения
  • Журналы приложений
  • Резюме
  • Заключение

Предварительные требования

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

Как разработать и создать приложение Angular с помощью Java Backend

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

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

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

Предварительные требования AWS

Amazon - ведущий поставщик облачных услуг и пионер облачных вычислений. AWS предоставляет более 200 сервисов, и очень важно знать, какой сервис выбрать для своих нужд.

Если вы новичок в AWS или только начинаете, вы можете прочитать следующую статью.

Как начать работу с AWS

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

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

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

// clone the project
git clone https://github.com/bbachi/angular-java-ecs.git
// change directory
cd angular-java-ecs
// install
mvn clean install
// Run the app
java -jar target/users-0.0.1-SNAPSHOT.jar

Dockerize проект

AWS App Runner - это сервис AWS, который обеспечивает быстрый, простой и экономичный способ развертывания прямо из исходного кода или образа контейнера непосредственно в масштабируемое и безопасное веб-приложение в облаке AWS.

Убедитесь, что ваш Java API работает на порту 80.

нам нужно создать Dockerfile, который создает образ Docker. Вот файл, который начинается с команды FROM и базового образа openjdk: 8-jre-alpine. Скопируйте сгенерированный файл войны и, наконец, команду CMD, которая запускается при создании образа.

Вот команды для создания образа и его запуска на движке Docker на вашем локальном компьютере.

// package the app
mvn clean package
// change the directory
cd docker
// build the image
docker build -t angular-java-image .
//list the images
docker images

Запуск веб-приложения в Docker

Теперь у нас есть образ докера, и давайте запустим контейнер, и как только он будет запущен, вы сможете получить доступ к веб-приложению по адресу http: // localhost: 80. Убедитесь, что ваше приложение работает через порт 80.

// running on Image
docker run -d -it -p  80:80 --name ang-java-ui angular-java-image
// list the container
docker ps
// logs
docker logs ang-java-ui
// exec into running container
docker exec -it ang-java-ui /bin/sh

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

Amazon Elastic Container Registry (ECR) - это полностью управляемый реестр контейнеров Docker, который упрощает разработчикам хранение, управление и развертывание образов контейнеров Docker. Amazon ECR интегрирован с Amazon Elastic Container Service (ECS), что упрощает рабочий процесс от разработки до производственной среды.

Amazon App Runner работает с Amazon ECR и общедоступными ECR. Но в этом посте мы увидим, как мы можем использовать Amazon ECR для хранения наших образов Docker. После того, как вы настроите учетную запись Amazon и создадите пользователя IAM с доступом администратора, первое, что вам нужно, - создать репозиторий Docker.

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

Консоль AWS

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

AWS CLI

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

aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-east-2.amazonaws.com

aws ecr create-repository --repository-name webapp --image-scanning-configuration scanOnPush=true --image-tag-mutability IMMUTABLE --region us-east-2

У вас будет такой же результат.

Добавление тегов к локальному образу Docker и отправка

Ранее вы создали образ Docker на своем локальном компьютере. Пришло время пометить это изображение с помощью этого URI репозитория на изображении выше.

docker tag angular-java-image:latest 864227929192.dkr.ecr.us-east-2.amazonaws.com/webapp:v6

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

// list the images
docker images
// push the image
docker push 864227929192.dkr.ecr.us-east-2.amazonaws.com/webapp:v6

Создание службы запуска приложений

Мы видели, как закрепить WebApp, отправив изображение в ECR в приведенных выше разделах. Давайте создадим App Runner из раздела служб.

Поскольку мы используем образ Docker, нам нужно выбрать источник как Container Registry, а поставщика как Amazon ECR.

Вы можете выбрать руководство в настройках развертывания и выбрать новую роль службы, как показано ниже. Теперь вы можете нажать «Далее».

Следующие важные вещи - это имя службы и порт, который прослушивает WebApp. Давайте дадим имя службы и порт, как показано ниже.

Наконец, вы можете нажать кнопку «Создать и развернуть» на последней странице обзора.

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

Если все пойдет хорошо, вы увидите следующее сообщение, и статус изменится на «Работает», как показано ниже.

Тестирование веб-приложения

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

https://h2r2iy6uag.us-east-2.awsapprunner.com/

Журналы приложений

Журналы приложений можно увидеть в разделе журналов, как показано ниже.

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

Резюме

  • Если вы хотите развернуть приложение на управляемой платформе, выбрав среду выполнения, AWS App Runner - правильный выбор.
  • Вы можете запустить все веб-приложение со средой выполнения Docker, не беспокоясь о конфигурации с вашей стороны.
  • Вы можете закрепить приложение Angular с помощью Backend API и развернуть его в среде выполнения Docker. Образы Docker можно извлечь из ECR и т. Д.
  • Amazon Elastic Container Registry (ECR) - это полностью управляемый реестр контейнеров Docker, который упрощает разработчикам хранение, управление и развертывание образов контейнеров Docker.
  • AWS App Runner - это сервис AWS, который обеспечивает быстрый, простой и экономичный способ развертывания прямо из исходного кода или образа контейнера непосредственно в масштабируемое и безопасное веб-приложение в облаке AWS.
  • Убедитесь, что ваше приложение работает на порту 80.

Заключение

Мы увидели, как запустить приложение Angular с Backend API с Docker Runtime на AWS App Runner. В будущих публикациях мы увидим, как выполнять автоматическое развертывание и настраивать переменные среды.