Моя проблема заключается в том, как запустить Google Chrome в контейнер Docker для Е2Е тестирования. Я создания файла Docker с официальной изображения Дженкинс, но когда я пытаюсь запустить гугл хром, он вылетает и показывает ошибку:
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
Trace/breakpoint trap (core dumped)
Изображение Дженкинс докер использует Debian Джесси
.
Я могу запустить Гугл Хром с--безголовый флаг и X-сервер не нужен.
Это мой файл docker:
Официальные изображения Дженкинс:
РЕПО человек работает в Google Chrome с GUI от докер:
Мой первый подход заключается в использовании xvbf
, но этот процесс является более простым при использовании --безголовый
флаг.
Я могу запустить хром в сервер Ubuntu с таким же команд для установки, но в настройки не удается.
После того, как другие намерения, я использовал `--не-песочница флага, но настройки изображений показывает следующую ошибку.
[0427/180929.595479:WARNING:audio_manager.cc(295)] Multiple instances of AudioManager detected
[0427/180929.595537:WARNING:audio_manager.cc(254)] Multiple instances of AudioManager detected
libudev: udev_has_devtmpfs: name_to_handle_at on /dev: Operation not permitted
На самом деле я запустил эту команду:
Гугл-Хром-стабильный безголовый --помощью --disable-ГПУ-нет-песочница http://www.google.com
Просто запустить хром с параметром--no-песочница`, что решает проблему
Используя этот образ alpeware/хром-безголовый-ствола
работал для меня в Ubuntu!
Команды, используемые в этом контейнере, чтобы запустить безголовый Хром это:
/usr/bin/google-chrome-unstable \
--disable-gpu --headless --no-sandbox \
--remote-debugging-address=0.0.0.0 \
--remote-debugging-port=9222 --user-data-dir=/data
здесь'с короткие видео из контейнера в действии
Я запустил контейнер в Ubuntu с помощью этой команды:
docker run -it --rm -p=0.0.0.0:9222:9222 \
--name=chrome-headless \
-v /tmp/chromedata/:/data alpeware/chrome-headless-trunk
затем используется Chrome для подключения к debug порту по локальным localhost:9222
С некоторыми изменениями вы могли бы сделать это работает в Дженкинс!
Эта статья является именно то, что мне нужно, чтобы запустить тесты карма с безголовым хром внутри докер:
https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3
В принципе, решение, чтобы запустить безголовый хром с флагом --нет-песочница
.
Я выражаю файла Docker по умолчанию [Селена узел хром][1] по следующим
FROM selenium/standalone-chrome-debug:latest
MAINTAINER Serge Arbuzov <[email protected]>
USER root
### jenkins set up ###
RUN apt-get update && apt-get install -y openssh-server sudo
RUN mkdir /var/run/sshd
RUN adduser jenkins
RUN echo jenkins:jenkins | chpasswd
RUN echo "jenkins ALL=(ALL) NOPASSWD:ALL">>/etc/sudoers
USER root
RUN echo export DISPLAY=":1.5" >> /etc/environment
ADD run.sh /run.sh
RUN chmod +x /run.sh
EXPOSE 22
CMD ["/run.sh"]
И мой run.sh это
#!/bin/bash
Xvfb :1 -screen 5 1024x768x8 &
/usr/sbin/sshd -D
Так что я могу использовать изображения по умолчанию, как Дженкинс узел
[1]: https://hub.docker.com/r/selenium/node-chrome/~/файла Docker/
Я Дон'Т есть ответ, но я знаю, что контейнер, который успешно запустить безголовый хром в Докер. Селен один:
[Селена Узел Хром][1]
Я использую его для автоматизированного тестирования моей webapp в Хром
Надеюсь, что это помогает
[1]: https://hub.docker.com/r/selenium/node-chrome/~/файла Docker/
Мы построили образ Docker с Chrome и Chromedriver, которое работает в Chrome в режиме headless для автоматических тестов. Мы're, используя это как падени-в замене для помощи PhantomJS в нашей докер-сочинять.в формате YML` установок. Изображение на основе альпийских Linux и не'т нужно или включать селен так что'ы довольно небольшой.
Источник: https://github.com/retreatguru/headless-chromedriver
Докер-Концентратор: https://hub.docker.com/r/retreatguru/headless-chromedriver