Розгортання Docker-контейнеризованого додатка в AWS Elastic Beanstalk з Gitlab CI/CD

pic

Проблема

Я працюю в компанії Jeeon Bangladesh Limited на посаді Full Stack Software engineer. У нас є кілька додатків на Node.js, які розміщені в AWS Elastic Beanstalk. Зараз ми розробляємо додаток на ASP .NET core 3.1, який потрібно розгорнути в AWS Elastic Beanstalk з налаштованим CI/CD. Але проблема в тому, що Elastic Beanstalk не підтримує .NET core 3.1, і, оскільки .NET core може працювати на Linux-машинах, ми не хочемо використовувати опцію .NET (Windows/IIS) для розгортання нашого додатка.

pic

Тому нам потрібно знайти інше рішення для розгортання нашого додатка. У нас є кілька варіантів, як, наприклад, використати Elastic Beanstalk Packet Builder або обрати Docker.

Ми вибрали Docker для розгортання нашого додатка в Elastic Beanstalk, оскільки ми всі комфортно працюємо з Docker, і це не обмежене знаннями конкретної платформи. Якщо я можу розгорнути додаток в контейнері Docker на AWS, то я можу зробити це на будь-якому сервісі (Google Cloud, Azure тощо). З іншого боку, якщо ми хочемо використовувати Elastic Beanstalk Packet Builder, то навчання обмежується тільки AWS.

Що таке Elastic Beanstalk

Elastic Beanstalk — це сервіс AWS, який використовує Amazon EC2 та S3 для розгортання, управління та масштабування ваших веб-додатків. Він використовує керовані контейнери, що підтримують Node.js, Java, Ruby, Docker та інші. Існує кілька способів розгорнути додатки за допомогою Elastic Beanstalk. Ви можете розгорнути за допомогою консолі управління, CLI або API. Унікальна особливість Elastic Beanstalk полягає в тому, що після завантаження вашого додатка він бере на себе такі завдання, як балансування навантаження, моніторинг стану, масштабування і так далі. Додаткову інформацію можна знайти на Elastic Beanstalk! Загалом, Elastic Beanstalk будує ваш Docker-образ, використовуючи ваш завантажений вихідний код, і потім розгортає його на EC2-інстансах, які працюють в середовищі Elastic Beanstalk.

У цьому посібнику ми:

  • Створимо Dockerfile для додатка на ASP .NET core
  • Розгорнемо наш Docker-контейнеризований додаток в Elastic Beanstalk за допомогою конфігурації одного контейнера, використовуючи Elastic Beanstalk CLI.
  • Підготуємо Gitlab CI/CD для додатка

Потрібно для цього

  1. Створіть або використовуйте існуючий акаунт AWS
  2. Встановіть Elastic Beanstalk CLI
  3. Завантажте Docker.
  4. Створіть або використовуйте існуючий додаток .NET core
  5. Git
  6. Репозиторій в Gitlab

Частина 1: Dockerизація додатка

Створіть файл з назвою "Dockerfile" у кореневій директорії вашого проєкту та вставте наступний код

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build  
WORKDIR /app  
COPY ./ ./  
RUN dotnet publish -c Release -o out  
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim  
WORKDIR /app  
COPY --from=build /app/out .  
CMD ASPNETCORE_URLS=http://*:80 dotnet appname.dll  
EXPOSE 80




Перекладено з: [Deploy Docker Contenarized app in Aws Elastic Beanstalk with Gitlab CI/CD](https://medium.com/@amitbd1508/deploy-docker-contenarized-app-in-aws-elastic-beanstalk-with-gitlab-ci-cd-53f32676d48a)

Leave a Reply

Your email address will not be published. Required fields are marked *