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
Construimos una imagen de Docker con Chrome y Chromedriver que ejecuta Chrome en modo sin cabeza para realizar pruebas automatizadas. Estamos usando esto como un reemplazo directo para PhantomJS en nuestras configuraciones docker-compose.yml
. La imagen se basa en Alpine Linux y no necesita ni incluye Selenium, por lo que es bastante pequeña.
Fuente: https://github.com/retreatguru/headless-chromedriver
Docker Hub: https://hub.docker.com/r/retreatguru/headless-chromedriver
Este artículo es exactamente lo que necesitaba para ejecutar las pruebas de Karma con Chrome sin cabeza dentro de la ventana acoplable:
https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3
Básicamente, la solución es ejecutar Headless Chrome con el indicador --no-sandbox
.
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:
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