Настраивать
Попытка запустить chrome без головы в качестве контейнера (изображение: https://hub.docker.com/r/alpeware/chrome-headless-trunk) в моем docker-compose и подключении к нему из другого контейнера.
Проблема
Чтобы на самом деле подключиться к chrome внутри контейнера, мне сначала нужно получить webSocketDebuggerUrl, который доступен по адресу http://0.0.0.0:9222/json/version файла chrome-headless.
Проблема в том, что мой запрос на этот путь всегда терпит неудачу с
RequestError: Ошибка: подключить ECONNREFUSED 0.0.0.0:9222
и не могу заставить webSocketDebuggerUrl подключиться к хрому.
Еще немного информации
Также, если я посещу http://0.0.0.0:9222/json/version в своем браузере сам, скопируйте URL-адрес и жестко закодируйте его в мой puppeteer.connect (), он работает ТОЛЬКО так, как ожидалось, если я заменю адрес «0.0.0.0» на мое (связанное) имя контейнера (указанное в docker-compose): http://chrome:9222/json/version
Если я попытаюсь запросить webSocketDebuggerUrl из /json/version, используя адрес имени контейнера (http://chrome:9222/json/version) я получаю сообщение об ошибке
StatusCodeError: 500 — «Заголовок хоста указан и не является IP-адресом или локальным хостом».
Мой код (абстракция)
const rp = require('request-promise')
const puppeteer = require('puppeteer-core')
let url = await rp({uri:'http://0.0.0.0:9222/json/version', json: true }).then(res => res.webSocketDebuggerUrl)
let browser = await puppeteer.connect({ browserWSEndpoint: url })