У меня есть контейнер Chrome (развернутый с использованием этого файла Docker), который отображает страницы по запросу из контейнера App.
Основной поток:
- Приложение отправляет HTTP-запрос в Chrome и в ответ получает URL-адрес websocket для использования (например,
ws://chrome.example.com:9222/devtools/browser/13400ef6-648b-4618-8e4c-b5c73db2a122
) - Затем приложение использует этот URL-адрес websocket для связи с Chrome и получения отображаемой страницы. Я использую библиотеку кукловодов для подключения к экземпляру Chrome и общения с ним, используя
puppeteer.connect({ browserWSEndpoint: webSocketUrl })
;
Для одного контейнера Chrome это работает очень хорошо.
Но я пытаюсь масштабировать все, чтобы иметь несколько контейнеров Chrome в рое Docker.
Проблема в том, что URL-адрес websocket, полученный приложением, специфичен для экземпляра, запущенного в этом конкретном контейнере Chrome, поэтому, когда он используется в приложении (и там, где сейчас имеется несколько контейнеров Chrome), запросы веб-приложений из приложения будут не обязательно направляться в подходящий контейнер Chrome.
Каков наилучший способ справиться с этим?