Как получить доступ к странице удаленной отладки для запуска Chromium Dockerized Puppeteer? - PullRequest
0 голосов
/ 17 октября 2019

Когда Chromium успешно запустится, его URL отладочной WebSocket должен выглядеть следующим образом: ws://127.0.0.1:9222/devtools/browser/ec261e61-0e52-4016-a5d7-d541e82ecb0a.

127.0.0.1:9222 должен иметь возможность просматривать Chrome для проверки безголового Chromium. Тем не менее, я не могу получить доступ к URL-адресу удаленного отладчика с помощью Chrome после того, как докеризирую свое приложение.

launchOption для запуска хрома с помощью Puppeteer:

{
  "args": [
    "--remote-debugging-port=9222",
    "--window-size=1920,1080",
    "--mute-audio",
    "--disable-notifications",
    "--force-device-scale-factor=0.8",
    "--no-sandbox",
    "--disable-setuid-sandbox"
  ],
  "defaultViewport": {
    "height": 1080,
    "width": 1920
  },
  "headless": true
}

Dockerfile:

FROM node:10.16.3-slim

RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf \
      --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && wget --quiet https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /usr/sbin/wait-for-it.sh \
    && chmod +x /usr/sbin/wait-for-it.sh

WORKDIR /usr/app
COPY ./ ./
VOLUME ["......." ]

RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
    && mkdir -p /home/pptruser/Downloads \
    && chown -R pptruser:pptruser /home/pptruser \
    && chown -R pptruser:pptruser /usr/app \
    && npm install

USER pptruser

CMD npm run start

EXPOSE 3000 9222

Запустите новый контейнер:

docker run \ 
    -p 3000:3000 \ 
    -p 9222:9222 \ 
    pptr

Порт 9222 должен быть доступен на моем хост-компьютере. Но Chrome показывает ошибку ERR_EMPTY_RESPONSE, когда я просматриваю 127.0.0.1:9222 и DOCKER-INTERNAL-IP:9222 истечет время ожидания.

...