Приклад багатоконтейнерного Docker в AWS Elastic Beanstalk: покроковий посібник

AWS Elastic Beanstalk спрощує розгортання та керування додатками в хмарі. Коли його поєднують з Docker, він стає потужною платформою для розгортання багатоконтейнерних додатків. У цій статті наводиться практичний приклад розгортання багатоконтейнерного Docker-додатка за допомогою AWS Elastic Beanstalk.

Що таке AWS Elastic Beanstalk?

AWS Elastic Beanstalk — це керована служба, яка:

  • Автоматизує надання інфраструктури.
  • Розгортає та керує додатками на різних мовах програмування та середовищах.
  • Забезпечує вбудовану підтримку Docker, включаючи багатоконтейнерні налаштування.

Приклад багатоконтейнерного Docker-додатка в AWS Elastic Beanstalk

Мета

Ми розгорнемо багатоконтейнерний додаток, що складається з:

  1. Простого веб-сервера на Node.js.
  2. Контейнера Redis для кешування.

Крок 1: Підготовка багатоконтейнерного додатка

Структура каталогів

Створіть таку структуру каталогів:

multi-container-app/  
├── Dockerfile  
├── docker-compose.yml  
└── app/  
 └── index.js

Додаток Node.js

Створіть файл index.js у каталозі app/:

const express = require('express');  
const redis = require('redis');  

const app = express();  
const client = redis.createClient({  
 host: 'redis', // Назва Docker-сервісу  
 port: 6379,  
});  
app.get('/', (req, res) => {  
 client.incr('visits', (err, visits) => {  
 if (err) return res.status(500).send('Error connecting to Redis');  
 res.send(`Number of visits: ${visits}`);  
 });  
});  
app.listen(3000, () => {  
 console.log('Server is running on port 3000');  
});

Dockerfile

Створіть Dockerfile для додатка Node.js:

FROM node:14  
WORKDIR /usr/src/app  
COPY app/ .  
RUN npm install express redis  
EXPOSE 3000  
CMD ["node", "index.js"]

Docker Compose файл

Створіть файл docker-compose.yml у кореневому каталозі:

version: '3'  
services:  
 web:  
 build: .  
 ports:  
 - "80:3000"  
 links:  
 - redis  
 redis:  
 image: "redis:alpine"

Крок 2: Ініціалізація середовища Elastic Beanstalk

Встановлення Elastic Beanstalk CLI

Переконайтеся, що у вас встановлений AWS Elastic Beanstalk CLI:

pip install awsebcli

Ініціалізація проєкту Elastic Beanstalk

Запустіть наступну команду в каталозі multi-container-app/:

eb init
  • Назва додатка: Введіть ім'я (наприклад, multi-container-app).
  • Платформа: Виберіть Docker.
  • Регіон: Виберіть ваш регіон AWS.

Крок 3: Розгортання багатоконтейнерного додатка

Створення середовища

Запустіть наступну команду для створення середовища:

eb create multi-container-env

Розгортання додатка

Після того, як середовище буде готове, розгорніть додаток:

eb deploy

Перевірка розгортання

  1. Перейдіть на Консоль Elastic Beanstalk.
  2. Знайдіть URL вашого середовища та відкрийте його в браузері.
  3. Ви повинні побачити повідомлення, яке відображає кількість відвідувань, з використанням контейнера Redis.

Крок 4: Моніторинг та керування середовищем

Моніторинг додатка

  1. Використовуйте панель керування Elastic Beanstalk для перегляду показників здоров'я.
  2. Доступ до журналів для налагодження та виправлення помилок.

Оновлення додатка

Зробіть зміни в додатку і перерозгорніть:

eb deploy

Завершення роботи середовища

Щоб заощадити кошти, коли середовище більше не потрібне:

eb terminate multi-container-env

Переваги використання Elastic Beanstalk для багатоконтейнерних додатків

  1. Спрощене управління:
  • Автоматизує надання ресурсів, балансування навантаження та масштабування.
  1. Безшовна інтеграція:
  • Добре працює з AWS-сервісами, такими як RDS, CloudWatch та IAM.
  1. Підтримка Docker Compose:
  • Легко розгортати та керувати багатоконтейнерними додатками.

Кращі практики

  1. Оптимізація Docker-образів:
  • Використовуйте легковажні базові образи, щоб мінімізувати час збірки та використання ресурсів.
  1. Моніторинг витрат:
  • Регулярно перевіряйте використання середовища, щоб оптимізувати витрати.
  1. Додаткові налаштування:
  • Конфігуруйте середовище для автоматизації розгортання, моніторингу та управління ресурсами.
    Увімкнути ведення журналів:

  • Використовуйте AWS CloudWatch для централізованого моніторингу журналів.

  1. Забезпечення ресурсів:
  • Застосовуйте ролі IAM для обмеження доступу до ресурсів AWS.

Висновок

AWS Elastic Beanstalk спрощує розгортання багатоконтейнерних Docker-додатків, дозволяючи безшовне масштабування та управління. У цьому прикладі було показано розгортання додатка на Node.js з контейнером Redis. Використовуючи автоматизаційні можливості Elastic Beanstalk, ви можете зосередитися на створенні додатків, поки AWS обробляє інфраструктуру.

Перекладено з: AWS Elastic Beanstalk Multi-Container Docker Example: A Step-by-Step Guide

Leave a Reply

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