Як розгорнути Docker-образ Node.js на Elastic Beanstalk, Частина 1

pic

Вступ:

Ця стаття є покроковим посібником, як докеризувати Node.js додаток та розгорнути Docker-образ на Elastic Beanstalk. Я використаю простий додаток Hello World, який можна надалі розширити для реалізації складнішого додатку.
Для зручності розуміння я розділив статтю на дві частини. У першій частині ми запустимо простий додаток Hello World і докеризуємо цей додаток, а в другій частині ми розгорнемо образ з DockerHub на Elastic Beanstalk.
Я припускаю, що читач уже має базові знання про Node.js, Docker та деякі базові команди Linux.

Огляд:

  1. Спочатку створимо простий Node.js додаток і запустимо його локально.
  2. Напишемо Dockerfile для докеризації локально працюючого Node.js додатка.
  3. Завантажимо Docker-образ на DockerHub
  4. Створимо інфраструктуру Elastic Beanstalk для Docker-середовища
  5. Розгорнемо Docker-образ на Elastic Beanstalk.

Передумови:

Якщо ви хочете реалізувати кроки разом зі мною, вам потрібні наступні речі;
1. Обліковий запис AWS
2. Обліковий запис DockerHub
3. Встановлений Node.js на вашій машині
4. Встановлений Docker

1. Створення простого Node.js додатка:

Давайте перейдемо до практичних кроків, для цього відкрийте термінал і виконайте наступні команди;

mkdir my-nodejs-app  
cd my-nodejs-app

Перша команда створить директорію з назвою my-nodejs-app, а друга перенесе вас всередину цієї директорії.

Створіть файл server.js всередині my-nodejs-app

Тепер час встановити необхідні залежності, для цього виконайте наступну команду:

npm install

Це завантажить залежності, визначені в файлі package.json, і створить інший файл package-lock.json всередині директорії.

Тепер все готово, ми можемо запустити Node.js додаток локально за допомогою наступної команди:

node server.js

Якщо ви все налаштували правильно, ви отримаєте повідомлення з URL-адресою, як показано нижче:

Running on http://127.0.0.1/8080

Вставивши URL у браузер, ви побачите повідомлення, скріншот також додається.
Welcome to my DevOps Labs

pic

Для того, щоб докеризувати працюючий Node.js додаток, нижче наведено Dockerfile, просто скопіюйте вміст і вставте його у вашу директорію.

Тепер час створити Docker-образ з Dockerfile:

docker build -t auasad/web-app .

Вище наведена команда прочитає Dockerfile і створить Docker-образ з ім'ям auasad/web-app в поточній директорії. Точка (.) в кінці команди вказує на створення образу в поточному місці.

Якщо образ створено, просто введіть наступну команду:

docker image ls

Всі образи будуть відображені, і ми зможемо знайти той, який ми щойно створили з іменем, auasad/web-app.

Тепер давайте запустимо Docker-образ і подивимося, що відбувається. Щоб запустити образ, введіть команду:

docker run -p 8080:8080 -d auasad/web-app

Тут,
-p : для зв'язування внутрішнього порту працюючого контейнера з зовнішнім портом
-d : для запуску контейнера в демон-режимі.
8080:8080 зв'язує зовнішній порт з портом всередині контейнера. Щоб запам'ятати, думайте як internal:external, де auasad/web-app — це ім'я образу, з якого буде запущений контейнер.

Знову введіть наступну URL-адресу в браузері:

http://127.0.0.1:8080

Це знову відобразить те ж саме повідомлення в браузері, але цього разу з Docker, а не локально.

Docker-образ успішно створено і запущено, тепер час завантажити образ на онлайн-репозиторій DockerHub. Для цього нам потрібен обліковий запис на hub.docker.com.

Завантаження образу на DockerHub:

Для цього нам потрібен обліковий запис на hub.docker.com, якщо у вас немає облікового запису, ви можете створити його тут.
Після створення облікового запису виконайте наступні кроки для створення репозиторію для вашого образу:

pic

Натисніть на вищезгадану кнопку та слідуйте інструкціям на наступному зображенні.

Тепер нам потрібно завантажити наш Docker-образ в репозиторій auasad/web-app на hub.docker.com. Для цього потрібно увійти в систему, ми використаємо наступну команду для входу через термінал:

docker login

Це запитає ім'я користувача та пароль. Після введення облікових даних введіть команду для завантаження образу в репозиторій:

docker push auasad/web-app

Коли образ буде успішно завантажено, ми побачимо його в репозиторії, нижче наведено скріншот завантаженого образу.

pic

образ завантажено з тегом latest.

Це зроблено для першої частини, в наступній частині цієї статті ми подивимося, як розгорнути цей образ на Elastic Beanstalk.

Перекладено з: How to deploy Node.js docker image to Elastic Beanstalk Part 1

Leave a Reply

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