Я хочу, чтобы экземпляр кукловода работал внутри контейнера 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/
Я могу видеть активные вкладки, но когда я выбираю одну из них, инструменты разработки не работают должным образом.
Кто-нибудь знает, где я ошибся?
Я создал репо с минимальным набором кода, который необходим для воспроизведения кода.