Запускать Docker контейнеров динамически в соответствии с БД? - PullRequest
0 голосов
/ 21 января 2020

Я занимаюсь разработкой приложения, которое транслирует видео и / или аудио из разных объектов. Идентификаторы и конфигурации этих объектов хранятся в виде записей в моей БД. Текущая архитектура моего приложения выглядит примерно так:

  • конечная точка API CRUD для общесистемных функций, таких как вход в систему или редактирование конфигурации объекта.
  • N-количество другие конечные точки (где N - это число объектов, а маршрут каждой конечной точки определяется указанным идентификатором c объекта, например: "/:id/api/") для определенных c функциональных возможностей каждого объекта. Каждый объект загружается приложением при инициализации. Эти конечные точки являются одновременно обработчиком REST API и сервером WebSocket для потоковой передачи мультимедиа, полученной от серверной части, которая была настроена для этого объекта.

Кроме того, существует экземпляр NGINX, который действует в качестве прокси-сервера и размещает наши клиентские файлы.

Очевидно, что в данный момент это не очень масштабируемо (один экземпляр сервера обрабатывает постоянно растущее количество объектов) и требует перезапуска экземпляра моего сервера при добавлении / удалении сущность - которая не идеальна. Я думал о том, чтобы разделить сервер моего приложения на микросервисы: один для общесистемного CRUD, и N других для каждого объекта, определенного в моей БД. В конечном счете, я бы хотел, чтобы эти микро-сервисы работали как Docker контейнеров. Проблемы (или вопросы, на которые я не знаю ответов), с которыми я сталкиваюсь в данный момент:

  1. Как можно динамически запускать Docker контейнеров в соответствии с БД (или программно )? Возможно ли это вообще?
  2. Как можно обновить работающий контейнер Docker, чтобы иметь возможность перенастроить эту сущность во время выполнения?
  3. Как можно настроить NGINX для прокси тех Dynami c микро-услуги? Я предполагаю, что мне придется использовать что-то вроде Consul?

Я не очень хорошо осведомлен, поэтому простите меня, если я слишком наивен, чтобы думать, что могу достичь такой архитектуры. Кроме того, если вы можете придумать лучшую архитектуру, я хотел бы услышать ваши предложения.

Спасибо!

...