Посилання: Jabir Ahammed
У цьому посібнику ми розглянемо, як розгорнути популярну гру з числами 2048 за допомогою контейнеризації через “Docker” і “AWS Elastic Beanstalk”. Посібник буде поділений на дві частини:
- Контейнеризація додатку та розгортання за допомогою Docker.
- Розгортання за допомогою AWS Elastic Beanstalk.
Репозиторій на GitHub для проєкту, що буде розгорнуто, 2048 Game, можна знайти за посиланням нижче.
[
GitHub - jabir000/2048
Сприяйте розвитку jabir000/2048, створивши акаунт на GitHub.
github.com
](https://github.com/jabir000/2048?source=post_page-----3a79d6738916--------------------------------)
Контейнеризація веб-додатку 2048 за допомогою Docker.
Тут я використовую EC2 Instance, вже створений на AWS, як мою хост-машину. Якщо ви не знайомі з EC2 Instances, можете ознайомитись з моєю статтею тут щодо того, як створити EC2 інстанс та підключитись до нього. Після створення EC2 інстанса на AWS я увійшов у віртуальну машину за допомогою інструмента SSH “PuTTy”
Успішний вхід у EC2 інстанс.
Тепер переходимо до контейнеризації додатку за допомогою Docker на працюючому EC2 інстансі.
- Спочатку встановіть Docker і Docker runtime на EC2 інстанс.
P.S: Встановлення Docker виходить за межі цієї статті, але ви можете знайти детальну інструкцію тут.
Після встановлення Docker, запустіть наступну команду, щоб переконатися, що Docker працює успішно на вашому EC2 інстансі. Ви повинні отримати повідомлення, подібне до того, що на зображенні нижче, де буде зазначено, що Docker “активний (працює)”.
sudo systemctl status docker
- Тепер створіть файл у папці під назвою “2048". Цей файл буде використовуватися як Dockerfile, в якому знаходяться команди для створення Docker образу.
mkdir 2048
cd 2048
nano Dockerfile
- Команда “nano” створить Dockerfile і відкриє його одночасно. Далі введіть наступний скрипт у Dockerfile.
FROM ubuntu:22.04
RUN apt-get update
RUN apt-get install -y nginx zip curl
RUN echo "daemon off;">>/etc/nginx/nginx.conf
RUN curl -o /var/www/html/master.zip -L https://codeload.github.com/jabir000/2048/zip/master
RUN cd /var/www/html/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip
EXPOSE 80
CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
-
Збережіть і вийдіть з файлу
-
Тепер побудуємо наш Docker образ, виконавши наступну команду
docker build -t "docker image name" .
Успішне створення Docker образу
- Перевірте, чи Docker образ успішно побудовано
sudo docker images
- Тепер ми запустимо контейнер із цього Docker образу на порту 80.
docker run -d -p 80:80 "container id"
8.
Перевірте, чи ваш контейнер був успішно створений.
docker ps
Якщо контейнер було створено успішно, ви побачите щось подібне.
Перейдіть до доступу до вашого додатку за адресою http://:80
Ми успішно розгорнули гру 2048 за допомогою контейнеризації через Docker.
Розгортання гри 2048 за допомогою AWS Elastic Beanstalk
AWS Elastic Beanstalk — це один з багатьох повністю керованих сервісів у хмарі AWS, який допомагає легко розгортати та масштабувати веб-додатки та сервіси, розроблені за допомогою Python, Ruby, Go, Java, PHP, .NET та Node.js. Завдяки AWS Elastic Beanstalk, розробники можуть швидко розгорнути та керувати додатками в хмарі AWS, не турбуючись про інфраструктуру, на якій буде розгорнуто додаток.
AWS Elastic Beanstalk пропонує багато переваг для розробників щодо швидкого розгортання та зручності керування. Серед них:
- Автоматичне розгортання.
- Автоматичне масштабування.
- Автоматичне та детальне надання потужностей.
- Моніторинг здоров’я веб-додатку.
- Автоматичне балансування навантаження.
Для додаткової інформації та навчання ви можете ознайомитись з офіційною документацією тут.
У цій частині ми розгорнемо гру 2048 за допомогою AWS Elastic Beanstalk.
Нагадаємо, що ми вже розгортали той самий веб-додаток за допомогою Docker в першій частині цього посібника. Це працюючий React додаток.
Крок 1: Налаштування середовища.
- Перейдіть до вашої AWS Management Console та шукайте Elastic Beanstalk у меню сервісів. Потім натисніть кнопку Create Application на головній сторінці сервісу AWS Elastic Beanstalk.
Сервіс Elastic Beanstalk
- Виберіть Web server environment як тип середовища і відповідно надайте ім’я вашому додатку. З ім’ям додатку заповниться і ім’я середовища, після чого ви можете додати опис середовища.
- Перейдіть до налаштування платформи як “Managed Platform” та типу платформи “Docker”, потім виберіть рекомендовану версію Docker.
- Переміщуємось до розділу з кодом додатку. Використовуючи ваш VS Code, відтворіть Docker файл, що використовувався в першій частині, на вашому локальному ПК. Після цього він буде завантажений як код додатку.
Виберіть опцію Upload your code і додайте мітку версії для кожного розгортання, яке ви робите в AWS Elastic Beanstalk.
- Виберіть “Single Instance (Free Tier Eligible)” як налаштування конфігурації.
Крок 2: Налаштування доступу до сервісу.
- Виберіть “Use an existing service role”, а потім створіть профіль EC2 Instance в консолі IAM з необхідними дозволами для AWS Elastic Beanstalk, як зазначено нижче.
a. AWSElasticBeanstalkWebTier
b. AWSElasticBeanstalkWorkerTier
c.
AWSElasticBeanstalkMulticontainerDocker
У цьому випадку я створив профіль EC2 Instance з ім'ям “aws-elasticbeanstalk-ec2-role”
Крок 3: Налаштування мережі, баз даних та тегів.
P.S. Не використовуйте стандартний VPC, тому переконайтесь, що ви створили власний кастомний VPC з необхідними вхідними правилами в групі безпеки, що дозволяють HTTP/HTTPS трафік.
Виберіть кастомний VPC, який ви створили, і публічну підмережу для налаштувань екземпляра.
Залиште всі інші опції за замовчуванням, потім натискайте Skip to review.
Крок 4: Огляд ваших налаштувань
Перегляньте налаштування, а потім натисніть Submit.
Крок 5: Моніторинг процесу створення середовища
Процес створення середовища ініційовано. Почекайте кілька хвилин, поки середовище буде успішно створено.
Якщо середовище було успішно створено, завантажте домен для доступу до веб-додатку.
Гру 2048 було успішно розгорнуто за допомогою AWS Elastic Beanstalk.
Дякуємо за читання!
Простою мовою
Дякуємо, що ви стали частиною нашої спільноти! Перед тим, як піти:
- Не забудьте поставити лайк та підписатися на автора! 👏
- Більше контенту можна знайти на PlainEnglish.io 🚀
- Підпишіться на наш безкоштовний щотижневий бюлетень. 🗞️
- Слідкуйте за нами: Twitter(X), LinkedIn, YouTube, Discord.
- Перегляньте наші інші платформи: Stackademic, CoFeed, Venture.
Перекладено з: Deployment of the 2048 Game using Docker and AWS Elastic Beanstalk