Создание конфигурации Docker Compose
Описание задачи
Вам необходимо создать конфигурацию для Docker Compose, которая позволит запустить конфигурацию из лекции по созданию Docker-контейнеров.
В конфигурации должны присутствовать:
- Контейнер для запуска NodeJS-приложения.
- Контейнер для запуска первичного Redis-сервера.
- Два контейнера для запуска реплик Redis-сервера.
- Контейнер для сбора журнала работы всех четырёх предыдущих серверов.
Требования к реализации:
- Все контейнеры должны общаться между собой через приватную Docker-сеть.
- Только контейнер с NodeJS-приложением должен публиковать свой порт для внешнего доступа.
- Контейнеры должны хранить свои записи в Docker-хранилище, управление которым осуществляет Docker Compose.
В качестве базы для создания флота контейнеров необходимо использовать пример с NodeJS из 6 главы книги DockerBook.
Предложение по реализации
- Скачайте каталог примера к себе на компьютер.
- В корне каталога создайте файл
docker-compose.yml
. - Сначала сформируйте запуск Docker-контейнеров Redis.
-
Добавьте описание службы
redis-primary
на основании Dockerfile из каталогаredis-base
.Параметры запуска службы надо взять из Dockerfile из каталога
redis_primary
. Их необходимо описать в полеcommand
службы.Хранилища должны быть сконфигурированы на уровне всей конфигурации и затем подключены к службам:
services: web: image: nginx:alpine volumes: - type: volume source: mydata target: /data volume: nocopy: true volumes: mydata: dbdata:
У вас должно быть 2 хранилища:
- Для данных Redis-серверов.
- Для хранения журналов сервисов.
Проверьте, что служба запустилась и работает.
-
Используйте собранный образ для первой службы для формирования служб
redis-replica-one
иredis-replica-two
.Для связи образов
redis-primary
и данных служб используйте следующий синтаксис docker-compose:services: redis-primary: build: redis_base/ image: redis_base/1.0.0 redis-replica-one: image: redis_base/1.0.0
Параметры запуска служб необходимо взять из Dockerfile из каталога
redis_replica
.Проверьте журналы работы запущенных служб. Они должны содержать информацию об успешном подключении к главному серверу.
-
-
Добавьте описание NodeJS-службы. Данная служба должна использовать Dockerfile из каталога
nodejs
. Подключите данную службу к хранилищу журналов.Удостоверьтесь, что после изменения конфигурации все службы запустились. Это будет означать, что NodeJS-приложение успешно подключается к Redis-хранилищу.
-
Добавьте описание LogStash-службы. Данная служба должна использовать Dockerfile из каталога
logstash
. Подключите данную службу к хранилищу журналов.Удостоверьтесь, что после перезапуска служб LogStash успешно агрегируют журналы.
В результате создания окружения с помощью Docker Compose у вас должны появиться следующие артефакты:
- Образ для запуска базы данных Redis.
- Образ для запуска NodeJS-приложения.
- Образ для запуска Logstash-приложения.
- Хранилище для данных журналов работы приложений.
- Хранилище для данных базы данных Redis.