Bagaimana cara menjalankan google chrome tanpa kepala di docker?

Masalah saya adalah bagaimana menjalankan google chrome di kontainer docker untuk pengujian e2e. Saya membuat Dockerfile dari image resmi Jenkins, tetapi ketika mencoba menjalankan google chrome, google chrome crash dan menampilkan error:

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

Image docker Jenkins menggunakan Debian jessie.

Saya dapat menjalankan google chrome dengan flag --headless dan server X tidak diperlukan.

Ini adalah file docker saya:

Gambar resmi Jenkins:

Repo seseorang menjalankan google chrome dengan GUI dari docker:

Pendekatan pertama saya adalah menggunakan xvbf, tetapi prosesnya lebih sederhana ketika menggunakan flag --headless.

Saya bisa menjalankan chrome di Ubuntu server dengan perintah yang sama untuk instalasi, tetapi di docker gagal.

Setelah maksud lain, saya menggunakan flag -tidak ada-sandbox, tetapi gambar docker menunjukkan kesalahan berikutnya.

[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

Sebenarnya saya menjalankan perintah ini:

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

Menggunakan gambar ini alpeware/chrome-headless-trunk bekerja untuk saya di ubuntu! Perintah yang digunakan dalam kontainer itu untuk meluncurkan headless chrome adalah sebagai berikut:

/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

berikut ini adalah video singkat dari kontainer yang sedang beraksi

Saya meluncurkan container di Ubuntu dengan perintah ini:

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

kemudian menggunakan Chrome untuk terhubung ke port debug di localhost:9222

Dengan beberapa modifikasi, Anda mungkin bisa menjalankan ini di Jenkins!

Sumber

Komentar (3)

Saya tidak punya jawabannya, tetapi saya tahu sebuah kontainer yang berhasil meluncurkan Chrome tanpa kepala di Docker. Yang selenium:

Selenium Chrome Node

Saya menggunakannya untuk pengujian otomatis webapp saya di Chrome

Semoga membantu

Komentar (1)

Saya memperluas Dockerfile default Selenium Chrome Node dengan mengikuti

FROM selenium/standalone-chrome-debug:latest
MAINTAINER Serge Arbuzov 

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

Dan run.sh saya adalah

#!/bin/bash

Xvfb :1 -screen 5 1024x768x8 &
/usr/sbin/sshd -D

Jadi saya dapat menggunakan gambar default sebagai node Jenkins

Komentar (0)