Описание задачи
Необходимо с использованием Docker Compose (и, возможно, Docker Swarm для оркестрации) развернуть сервисы с чётко разделёнными уровнями доступа: некоторые компоненты должны быть доступны извне (с публикацией портов), остальные - только внутри сети Docker.
Архитектура
- Внешние (публикуют порты):
- API Gateway - единая точка входа для внешних запросов;
- Admin Panel - панель управления для администраторов;
- Frontend - пользовательский интерфейс.
- Внутренние (без публикации портов):
- Все остальные сервисы (микросервисы, базы данных, кэши и т.д.) доступны исключительно внутри сети Docker;
- Коммуникация происходит по внутренним именам контейнеров и портам, которые не выставляются наружу.
Технические требования
- Написать файл docker-compose.yml с определением всех сервисов и сетей;
- Настроить изоляцию: внешние сервисы подключаются к внешней сети с published портами, внутренние - только к внутренней сети без портов;
- Рассмотреть вариант развертывания через Docker Swarm (создать stack файл, если требуется отказоустойчивость или балансировка);
- Убедиться, что все сервисы корректно запускаются и общаются между собой.
Результат работы
- Конфигурационные файлы Docker Compose (и Swarm, если используется);
- Инструкция по запуску (можно в комментариях к коду);
- Гарантированная работоспособность стека на тестовом окружении.
Примечания
- Конкретные технические детали (названия сервисов, порты) исполнитель может уточнить в процессе обсуждения;
- Кодовые имена фирм, телефоны, сайты не используются - все упоминания заменены на общие названия сервисов.