AWS Elastic Beanstalk спрощує розгортання та керування додатками в хмарі. Коли його поєднують з Docker, він стає потужною платформою для розгортання багатоконтейнерних додатків. У цій статті наводиться практичний приклад розгортання багатоконтейнерного Docker-додатка за допомогою AWS Elastic Beanstalk.
Що таке AWS Elastic Beanstalk?
AWS Elastic Beanstalk — це керована служба, яка:
- Автоматизує надання інфраструктури.
- Розгортає та керує додатками на різних мовах програмування та середовищах.
- Забезпечує вбудовану підтримку Docker, включаючи багатоконтейнерні налаштування.
Приклад багатоконтейнерного Docker-додатка в AWS Elastic Beanstalk
Мета
Ми розгорнемо багатоконтейнерний додаток, що складається з:
- Простого веб-сервера на Node.js.
- Контейнера 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
Перевірка розгортання
- Перейдіть на Консоль Elastic Beanstalk.
- Знайдіть URL вашого середовища та відкрийте його в браузері.
- Ви повинні побачити повідомлення, яке відображає кількість відвідувань, з використанням контейнера Redis.
Крок 4: Моніторинг та керування середовищем
Моніторинг додатка
- Використовуйте панель керування Elastic Beanstalk для перегляду показників здоров'я.
- Доступ до журналів для налагодження та виправлення помилок.
Оновлення додатка
Зробіть зміни в додатку і перерозгорніть:
eb deploy
Завершення роботи середовища
Щоб заощадити кошти, коли середовище більше не потрібне:
eb terminate multi-container-env
Переваги використання Elastic Beanstalk для багатоконтейнерних додатків
- Спрощене управління:
- Автоматизує надання ресурсів, балансування навантаження та масштабування.
- Безшовна інтеграція:
- Добре працює з AWS-сервісами, такими як RDS, CloudWatch та IAM.
- Підтримка Docker Compose:
- Легко розгортати та керувати багатоконтейнерними додатками.
Кращі практики
- Оптимізація Docker-образів:
- Використовуйте легковажні базові образи, щоб мінімізувати час збірки та використання ресурсів.
- Моніторинг витрат:
- Регулярно перевіряйте використання середовища, щоб оптимізувати витрати.
- Додаткові налаштування:
-
Конфігуруйте середовище для автоматизації розгортання, моніторингу та управління ресурсами.
Увімкнути ведення журналів: -
Використовуйте AWS CloudWatch для централізованого моніторингу журналів.
- Забезпечення ресурсів:
- Застосовуйте ролі IAM для обмеження доступу до ресурсів AWS.
Висновок
AWS Elastic Beanstalk спрощує розгортання багатоконтейнерних Docker-додатків, дозволяючи безшовне масштабування та управління. У цьому прикладі було показано розгортання додатка на Node.js з контейнером Redis. Використовуючи автоматизаційні можливості Elastic Beanstalk, ви можете зосередитися на створенні додатків, поки AWS обробляє інфраструктуру.
Перекладено з: AWS Elastic Beanstalk Multi-Container Docker Example: A Step-by-Step Guide