Я б сказав, що успішне розгортання Docker контейнера в Elastic Beanstalk — це перший крок до чудового майбутнього з Amazon Web Services. Elastic Beanstalk абстрагує деталі масштабування, балансування навантаження та надання ресурсів від розробника, щоб ми могли зосередитись на написанні чистого коду. Базовий код для цієї статті буде таким самим, як для серії статей Guid to Deploying K8S on AWS. Замість розгортання кількох контейнерів, ми будемо розгортати лише образ клієнта.
[
kirtfieldk/BC_API
В цьому API користувач зможе додавати, видаляти, оновлювати та отримувати заявки стажерів, які подають заявки…
github.com
](https://github.com/kirtfieldk/BCAPI?source=postpage-----f586f02c5de5--------------------------------)
Щоб цей підручник працював гладко, необхідно виконати такі передумови.
- встановлений aws-cli з налаштованими обліковими даними
- встановлена командна лінія eb — https://github.com/aws/aws-elastic-beanstalk-cli-setup
Ми працюватимемо в директорії /bc_api/client/
. Загалом, всі команди eb
повинні виконуватись у директорії, де знаходиться Dockerfile
. Усередині цієї директорії виконайте команду
eb init -p docker — region
щоб створити інстанс Elastic Beanstalk з платформою docker. Це створить папку ./elasticbeanstalk
, яка налаштовує наш інстанс. Для зміни платформи виконайте команду
eb platform select
це буде потрібно, якщо виникне помилка щодо неправильного платформи. Це має більше шансів на виникнення, якщо замість цього буде виконано команду
eb init
і налаштовано на значення за умовчанням. Щоб протестувати це локально, виконайте команду
eb local run — port
щоб побудувати та одразу запустити UI на порту client_port
. Це значно швидше, щоб перевірити, чи контейнер працює локально, ніж чекати довго на розгортання контейнера. Якщо екземпляр eb
local запускається, ми можемо почати розгортати його на Elastic Beanstalk. Команда
eb create
щоб назвати нове середовище (як гілка) або виконайте
eb create
щоб пройти через запитання налаштування. Ця команда створить низку сервісів, необхідних для підтримки нашого додатку.
eb create
Цей вивід показує, що наш Elastic Beanstalk створив групу безпеки, балансувальник навантаження та налаштування автоскейлінгу для запуску, і буде створено ще кілька сервісів.
Після завершення налаштування, команда
eb open
відкриє наш стандартний браузер на користувацький кінцевий AWS ендпоінт для відображення додатку.
Успішне розгортання
Як бачимо — успіх!!
Основні команди
eb list
показує всі наші імена середовищ, схоже на git branch -a.
eb use
перемикає між середовищами, схоже на git checkout .
eb status
показує стан здоров'я та деталі інстансу Elastic Beanstalk.
Підводні камені
Щоб eb
працював коректно, наша директорія повинна містити хоча б Dockerfile
або Dockerrun.aws.json
у кореневій директорії. Це не включає dockerfile.
Хоча ці два імені файлів відрізняються великою літерою D,
наше розгортання не відбудеться.
AWS Elastic Beanstalk не підтримує багатоступеневі побудови Docker образів. Тому dockerfiles, як той, що нижче, не працюватимуть.
клієнтський dockerfile
Це тому, що eb
намагатиметься завантажити образи as
та builder,
які не є образами. Тому eb
отримає помилки cannot find image
. Щоб виправити цю сумну проблему, нам просто потрібно змінити наш dockerfile на наступний.
У цьому новому dockerfile перший етап просто позначений його індексом, 0.
Етап перший більше не має псевдоніму, і ми використовуємо команду COPY --from=0.
Приємно бачити, що AWS не ускладнює розгортання одиночних контейнерів; натомість це веселий процес.
Перекладено з: Guide: Deploying Container on AWS Elastic BeanStalk