Описание задачи

Необходимо с использованием Docker Compose (и, возможно, Docker Swarm для оркестрации) развернуть сервисы с чётко разделёнными уровнями доступа: некоторые компоненты должны быть доступны извне (с публикацией портов), остальные - только внутри сети Docker.

Архитектура

  • Внешние (публикуют порты):
    • API Gateway - единая точка входа для внешних запросов;
    • Admin Panel - панель управления для администраторов;
    • Frontend - пользовательский интерфейс.
  • Внутренние (без публикации портов):
    • Все остальные сервисы (микросервисы, базы данных, кэши и т.д.) доступны исключительно внутри сети Docker;
    • Коммуникация происходит по внутренним именам контейнеров и портам, которые не выставляются наружу.

Технические требования

  • Написать файл docker-compose.yml с определением всех сервисов и сетей;
  • Настроить изоляцию: внешние сервисы подключаются к внешней сети с published портами, внутренние - только к внутренней сети без портов;
  • Рассмотреть вариант развертывания через Docker Swarm (создать stack файл, если требуется отказоустойчивость или балансировка);
  • Убедиться, что все сервисы корректно запускаются и общаются между собой.

Результат работы

  • Конфигурационные файлы Docker Compose (и Swarm, если используется);
  • Инструкция по запуску (можно в комментариях к коду);
  • Гарантированная работоспособность стека на тестовом окружении.

Примечания

  • Конкретные технические детали (названия сервисов, порты) исполнитель может уточнить в процессе обсуждения;
  • Кодовые имена фирм, телефоны, сайты не используются - все упоминания заменены на общие названия сервисов.