Запустите безголовый хром на док-контейнере - PullRequest
0 голосов
/ 27 декабря 2018

Запуск Chrome на док-станциях возможен только в том случае, если Chrome отключен.К сожалению, безголовый Chrome не может игнорировать ошибки сертификатов, которые мешают запуску моих тестов.

Я пытаюсь запустить уже работающую среду тестирования NodeJS e2e в док-контейнере.Большинство тестов проходят, но когда сайт требует сертификат, к нему нельзя получить доступ.Ни на одном безголовом хроме я могу просто проигнорировать ошибку сертификации.Базовый образ докера, установленный на контейнере: Node: 8

{browserName: 'chrome', chromeOptions: {binary: puppeteer.executablePath (), args: ['--lang = en-US', '--headless ',' - no-sandbox ',' - ignore-certificate-errors ']}}

Ожидаемый результат - запустить Chrome с графическим интерфейсом в контейнере Docker или как-то игнорировать серверошибки сертификата в безголовом хроме.

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Другой способ (описанный здесь Нильсом де Моором) - позволить контейнеру докера подключиться к X-серверу вашего локального компьютера.

Скажите, что ваш ip-адрес равен 192.168.0.2.

Вы можете настроить туннель для вашего дисплея X, т.е. на порт 6010 (что соответствует отображению 192.168.0.2:10) с помощью socat.В целях безопасности аргумент range просит socat принимать соединения только с IP-адреса вашего компьютера.

socat TCP-LISTEN:6010,reuseaddr,fork,range=192.168.0.2/32 UNIX-CLIENT:\"$DISPLAY\" &

Теперь вы можете установить переменную DISPLAY внутри контейнера докера с помощью -e, когда вызапустите его.

docker run -e DISPLAY=192.168.0.2:10 gns3/xeyes

В случае chrome есть некоторые дополнительные сложности, описанные в связанном посте, потому что chrome требует некоторых дополнительных привилегий (например, добавить --privileged)

0 голосов
/ 27 декабря 2018

Используйте Xvfb.Это позволит вам использовать Chrome с графическим интерфейсом.

Идея проста: вы используете виртуальный рабочий стол.Настройка нескольких рабочих столов / дисплеев на автономной виртуальной машине потребовала некоторых усилий.С Docker это просто.

Некоторые примеры:

http://www.mattzeunert.com/2018/07/21/running-headful-chrome-on-ubuntu-server.html

https://medium.com/dot-debug/running-chrome-in-a-docker-container-a55e7f4da4a8

...