ASP.NET Core на AWS Elastic Beanstalk через Docker-образ за допомогою GitHub, CodeBuild та CodePipeline для CI/CD.

pic

Привіт,

У цій статті ми побачимо, як створити сервіс ASP.NET Core, побудувати Docker-образ з цим сервісом, як обробити його через AWS Code Pipelines та автоматично розгорнути на інстансі Elastic Beanstalk.

Перші кроки

Проєкт веб-додатку ASP.NET Core

Запустіть скрипти, щоб створити новий веб-проєкт.

mkdir aspnetcore-api-aws  
cd aspnetcore-api-aws  
dotnet new web

Тепер ви можете змінювати кінцеві точки в файлі Startup.cs на свій розсуд.

Файл Buildspec

Створіть файл Buildspec.yml наступним чином:

version: 0.2  
phases:  
  pre_build:  
    commands:  
      - dotnet restore  
  build:  
    commands:  
      - dotnet publish -o output  
      - mkdir build  
      - cp -R output build/output  
      - cp Dockerfile build/Dockerfile  
artifacts:  
  files:  
    - '**/*'  
  base-directory: build

Цей файл визначає:

  • Відновлення залежностей проєкту на етапі перед будівництвом.
  • Публікацію проєкту у папку output.
  • Створення папки build.
  • Копіювання результатів і Dockerfile у папку build.
  • Визначення всіх файлів в базовій директорії build як артефакти для копіювання.

Dockerfile

Створіть Dockerfile наступним чином:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1  
COPY _output/* _/app/  
EXPOSE 80  
ENTRYPOINT ["dotnet", "/app/aspnetcore-api-aws.dll"]

Це створює образ із шаблонів aspnet:3.1, копіює вміст папки вихідних файлів до контейнера, відкриває порт 80 та визначає точку запуску для запуску нашого додатку на порту 80.

На GitHub

Звісно, створіть репозиторій на GitHub, зробіть commit та push всього вашого коду на основну гілку.

Більше коду не буде! 😀

AWS сервіси

Сервіс Elastic Beanstalk

Створіть додаток Elastic Beanstalk, а потім нове середовище додатку як Web server environment.

У параметрах платформи виберіть Docker, як показано нижче:

pic

Після цього середовище буде … початим… Чекайте! …ed.

Ви повинні побачити вебсайт, подібний до цього, при доступі до URL вашого середовища.

pic

Сервіс CodePipeline

Створіть CodePipeline і дайте йому ім’я. Виберіть GitHub як постачальника джерела і підключіть його. Виберіть ваш GitHub проєкт та основну гілку.

У секції Build Stage виберіть AWS CodeBuild як постачальника, а в тому ж потоці створіть новий проєкт CodeBuild на спливаючому вікні, з наступними налаштуваннями.

pic

Залиште конфігурацію Buildspec без змін. Пам'ятайте! CodeBuild використовуватиме файл Buildspec вашого репозиторію.

pic

У секції Deploy виберіть AWS Elastic Beanstalk як постачальника. Також виберіть додаток і середовище, яке ми створили раніше.

Перевірте все і натисніть Create Pipeline.

Тепер, дозвольте Pipeline налаштувати все.

Якщо все пройшло добре, ви побачите кроки Pipeline, як показано на зображенні нижче.

pic

Це означає, що ваш Pipeline працює правильно. Перевірте URL середовища, щоб побачити ваш сервіс в онлайні.

Висновок

Усі ці інструменти разом надають чудове рішення для нашої безперервної інтеграції та доставки.

Ви також можете потребувати таких функцій, як blue/green deployment, наприклад.
Отже, ось чому варто перевірити додаткові функціональності через інстанси Elastic Beanstalk та документацію Code Pipelines.

Якщо ви хочете перевірити мій репозиторій на GitHub, який використовувався в цьому прикладі, ви можете знайти його за наступним посиланням.

[

fmacedoo/aspnetcore-api-aws

Внесок у розробку fmacedoo/aspnetcore-api-aws, створивши акаунт на GitHub.

github.com

](https://github.com/fmacedoo/aspnetcore-api-aws?source=post_page-----bfe00d8dbec6--------------------------------)

Дякую всім!

Перекладено з: ASP.NET Core on AWS Elastic Beanstalk Docker image through GitHub, CodeBuild, and CodePipeline CI/CD.

Leave a Reply

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