reducir navegar mucha memoria internet google consumo consume como chrome google-chrome docker jenkins e2e-testing

google-chrome - mucha - como navegar sin internet google chrome



¿Cómo ejecutar google chrome sin cabeza en docker? (7)

Mi problema es cómo ejecutar google chrome en el contenedor de la ventana acoplable para las pruebas e2e. Creo un Dockerfile desde la imagen oficial de Jenkins, pero cuando intento ejecutar Google Chrome, se bloquea y muestra el error:

Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted Trace/breakpoint trap (core dumped)

La imagen de Jenkins docker utiliza Debian jessie .

Puedo ejecutar google chrome con la bandera --headless y el servidor X no es necesario.

Este es mi archivo docker:

Imagen oficial de Jenkins:

El repositorio de una persona ejecuta google chrome con GUI desde la ventana acoplable:

Mi primer enfoque es usar xvbf , pero el proceso es más simple cuando se usa --headless indicador sin --headless .

Puedo ejecutar chrome en el servidor Ubuntu con los mismos comandos para la instalación, pero en la ventana acoplable falla.

Después de otros intentos, utilicé el indicador --no-sandbox , pero las imágenes de la ventana acoplable muestran el siguiente error.

[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

En realidad me encontré con este comando:

google-chrome-stable --headless --disable-gpu --no-sandbox http://www.google.com


¡Usar esta imagen alpeware/chrome-headless-trunk funcionó para mí en ubuntu! El comando utilizado en ese contenedor para iniciar Chrome sin cabeza es este:

/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

Aquí hay un breve video del contenedor en acción.

Lanzé el contenedor en Ubuntu con este comando:

docker run -it --rm -p=0.0.0.0:9222:9222 / --name=chrome-headless / -v /tmp/chromedata/:/data alpeware/chrome-headless-trunk

luego usó Chrome para conectarse al puerto de depuración en localhost:9222

¡Con algunas modificaciones probablemente puedas poner esto en funcionamiento en Jenkins !

Fuentes




Extiendo el nodo predeterminado de Dockerfile Selenium Chrome siguiendo

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"]

Y mi run.sh es

#!/bin/bash Xvfb :1 -screen 5 1024x768x8 & /usr/sbin/sshd -D

Así que puedo usar la imagen por defecto como nodo Jenkins


No tengo la respuesta, pero conozco un contenedor que lanza con éxito un Chrome sin cabeza en Docker. El selenio uno:

Nodo de cromo de selenio

Lo uso para las pruebas automatizadas de mi aplicación web en Chrome

Espero eso ayude


Simplemente inicie chrome con --no-sandbox que resuelve el problema


añadir

--cap-add SYS_ADMIN

al comando de ejecución de la ventana acoplable

ex:

docker run --rm -p=81:81 -d -v $(pwd)/src:/opt/code --name chrome_test --cap-add=SYS_ADMIN test/chrome_iso