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!
Saya tidak punya jawabannya, tetapi saya tahu sebuah kontainer yang berhasil meluncurkan Chrome tanpa kepala di Docker. Yang selenium:
Saya menggunakannya untuk pengujian otomatis webapp saya di Chrome
Semoga membantu
Saya memperluas Dockerfile default Selenium Chrome Node dengan mengikuti
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"]
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