Запустите приложение узла из другого приложения узла, запущенного внутри контейнера докеров.

У меня есть приложение node, которое предоставляет REST API. Когда он получает HTTP-запрос, он запускает другое/другое приложение узла, назовем его «сервисным приложением».

Приложение REST запускается внутри контейнера, и самый простой способ запустить сервисное приложение — просто вызвать child_process.exec (хотя мы просто pm2), но затем они запускаются внутри одного и того же контейнера. Если приложение REST получает несколько запросов, это решение с одним контейнером просто не будет масштабироваться.

Так возможно ли, что приложение REST может запускать сервисное приложение внутри своего собственного контейнера? Если да, то как это сделать?

Кто-то также предложил мне запустить мое REST-приложение в Docker Swarm, поэтому, когда оно получает запрос, оно просто запускает другую службу Docker для сервисного приложения. Но я понятия не имею, как это сделать или даже это возможно?

Я новичок в докере, любые советы очень ценятся. Спасибо!


person Qiulang    schedule 12.10.2017    source источник


Ответы (1)


Вы можете управлять докером изнутри контейнера, например, привязав файл /var/run/docker.sock к самому контейнеру (флаг -v для запуска докера). Но будьте очень осторожны, если кто-то получит к нему доступ, это будет более-менее равносильно предоставлению ему root-доступа к машине. Самым безопасным способом было бы создать второе приложение REST, которое запускается в отдельном контейнере и может запускать новые контейнеры по запросу. Затем вы можете просто вызвать его из 1-го приложения и быть уверенным, что он запустит только контейнер с вашим приложением и ничего больше.

person odk    schedule 12.10.2017