Привіт,
У цій статті ми побачимо, як створити сервіс 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, як показано нижче:
Після цього середовище буде … початим… Чекайте! …ed.
Ви повинні побачити вебсайт, подібний до цього, при доступі до URL вашого середовища.
Сервіс CodePipeline
Створіть CodePipeline і дайте йому ім’я. Виберіть GitHub як постачальника джерела і підключіть його. Виберіть ваш GitHub проєкт та основну гілку.
У секції Build Stage виберіть AWS CodeBuild як постачальника, а в тому ж потоці створіть новий проєкт CodeBuild на спливаючому вікні, з наступними налаштуваннями.
Залиште конфігурацію Buildspec без змін. Пам'ятайте! CodeBuild використовуватиме файл Buildspec вашого репозиторію.
У секції Deploy виберіть AWS Elastic Beanstalk як постачальника. Також виберіть додаток і середовище, яке ми створили раніше.
Перевірте все і натисніть Create Pipeline.
Тепер, дозвольте Pipeline налаштувати все.
Якщо все пройшло добре, ви побачите кроки Pipeline, як показано на зображенні нижче.
Це означає, що ваш 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.