Архітектура проєкту на сьогодні.
Представляємо сьогоднішній проєкт!
Що таке Docker?
У цьому проєкті я використовую Docker для створення контейнерів на основі контейнерних образів та налаштування власного образу контейнера.
Що я не очікував...
Що я не очікував, так це як швидко можна розгорнути застосунок за допомогою Elastic Beanstalk.
Цей проєкт зайняв у мене…
Цей проєкт зайняв 4 години, включаючи весь час на документацію.
Розуміння контейнерів та Docker
Контейнери
Контейнери — це інструменти для пакування застосунків у такий спосіб, щоб їх було легко запускати розробникам. Вони корисні, оскільки допомагають розробникам/інженерам, які працюють у команді, більш ефективно ділитися своєю роботою.
Контейнерний образ — це шаблон/план для створення контейнерів. Контейнери, створені з одного й того ж образу, будуть працювати однаково, що допомагає розробникам у команді мати уніфікований досвід при запуску того самого застосунку.
Docker
Docker — це платформа для створення та керування контейнерами. Docker полегшує роботу з контейнерами. Desktop — це програмне забезпечення для взаємодії з Docker. Docker Desktop спрощує роботу безпосередньо з Docker.
Docker демон є «двигуном» для Docker, який отримує команди, що ми надсилаємо через клієнтів, наприклад, клієнтів у Docker Desktop або текстові команди, надіслані в термінал, і фактично створює/керує/контролює контейнери.
Запуск образу Nginx
Nginx — це веб-сервер/програмне забезпечення, яке допомагає з доставкою веб-контенту. Nginx часто називають проксі-сервером, що означає, що він допомагає з розподілом трафіку до вашого застосунку через інстанси, на яких він працює.
Команда, яку я виконав для запуску нового контейнера, була docker run
. Я також вказав параметри -d -p 80:80 nginx
, що означає, що ми запускаємо контейнер у фоновому режимі (-d) і зв’язуємо порт 80 нашого хост-комп’ютера з портом 80 контейнера (-p80:80).
Створення кастомного образу
Dockerfile — це набір інструкцій, які вказують Docker, як створювати ваш кастомний образ контейнера.
Мій Dockerfile вказує Docker три речі: по-перше, мій кастомний контейнер використовує останню версію Nginx як базу. Потім я модифікую цю базу, замінюючи стандартну сторінку вітання Nginx на власний файл index.html
.
Команда, яку я використав для створення кастомного образу з моїм Dockerfile, була docker build
. Точка в кінці команди означає, що Docker може знайти Dockerfile в поточній директорії, тобто в папці на моєму робочому столі.
Запуск мого кастомного образу
Під час запуску мого кастомного образу виникла помилка, оскільки я намагався зв’язати порт 80 з новим портом контейнера 80, але вже працюючий контейнер використовував цей порт. Я вирішив цю проблему, зупинивши працюючий контейнер, щоб запустити новий.
У цьому прикладі контейнерний образ є шаблоном для створення нового контейнера, що працює з Nginx-сервером, який обслуговує мій кастомний файл index.html
. Контейнер — це фактичне програмне забезпечення, яке працює з Nginx-сервером з такими специфікаціями.
Elastic Beanstalk
Elastic Beanstalk — це сервіс AWS, який допомагає з розгортанням застосунків у хмарі. Він абстрагує велику частину роботи з налаштуванням хмарної інфраструктури при розгортанні застосунків.
Розгортання мого кастомного образу за допомогою Elastic Beanstalk зайняло 10 хвилин. Це включає час, витрачений на запуск застосунку в Elastic Beanstalk.
кастомний образ з Elastic Beanstalk
Перекладено з: Containers on ElasticBeanstalk