удаленная отладка кукловода с обратным прокси NGINX с использованием docker и docker-compose - PullRequest
0 голосов
/ 13 ноября 2018

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

Для этого я передаю порт удаленной отладки, а также адрес удаленной отладки при запуске кукловода:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
      args: [ 
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--remote-debugging-port=9222',
      '--remote-debugging-address=0.0.0.0'
      ]
  });
  const page = await browser.newPage();
  await page.goto('https://www.google.com');
  console.log("Chrome should be listening on port 9222");
})();

Пока все хорошо. Когда я выполняю этот код, я могу получить доступ к инструментам удаленной отладки на http://localhost:9222,, однако я хочу поместить это за обратным прокси-сервером NGINX (nginx работает в другом контейнере). Я добавляю расположение в конфигурации NGINX, которое пересылает в контейнер chrome на порт отладки:

location / {
  proxy_http_version 1.1;
  proxy_set_header Host $host;
  proxy_pass http://chrome:9222/;
}

Затем я связываю два контейнера, используя файл docker-compose:

version: "3"
services:
  chrome:
    build: ./chrome
    ports:
      - "9222:9222"
  test-client:
    build: ./client
    ports:
      - "8080:80"
    links:
      - "chrome"

Я могу связаться с отладчиком по http://localhost:9222, но не по http://localhost:8080/

Я могу видеть активные вкладки, но когда я выбираю одну из них, инструменты разработки не работают должным образом.

Кто-нибудь знает, где я ошибся?

Я создал репо с минимальным набором кода, который необходим для воспроизведения кода.

...