2015-11-20 1 views
6

Je suis en train de courir Chrome sans tête dans un conteneur Docker utilisant Xvfb. Toutefois, bien que les processus Google Chrome soient affichés, il n'atteint pas mon site Web de test. L'exécution des mêmes commandes en dehors de Docker est réussie.Headless Chrome en utilisant Docker Xvfb

Xvfb :0 -screen 0 1024x768x24 & 
DISPLAY=:0 google-chrome http://mytestpage.com 

Dans Docker, je reçois les messages/erreurs suivantes:

Xlib: extension "RANDR" missing on display ":0". 
Xlib: extension "RANDR" missing on display ":0". 
[1180:1180:1120/051319:ERROR:desktop_window_tree_host_x11.cc(882)] Not implemented reached in virtual void views::DesktopWindowTreeHostX11::InitModalType(ui::ModalType) 
[1223:1223:1120/051319:ERROR:sandbox_linux.cc(338)] InitializeSandbox() called with multiple threads in process gpu-process 
[1180:1201:1120/051319:ERROR:browser_gpu_channel_host_factory.cc(144)] Failed to create channel. 

Alors que

ps au | grep chrome 

* root  128 0.1 0.4 533772 69868 ?  Sl+ 06:02 0:00 /opt/google/chrome/chrome http://mytestpage.com 
* root  139 0.0 0.2 342648 44016 ?  S+ 06:02 0:00 /opt/google/chrome/chrome --type=zygote 
* root  140 0.0 0.0 28132 3812 ?  S+ 06:02 0:00 /opt/google/chrome/nacl_helper 
* root  143 0.0 0.0 342648 8016 ?  S+ 06:02 0:00 /opt/google/chrome/chrome --type=zygote 
* root  181 0.0 0.3 523452 52392 ?  Sl+ 06:02 0:00 /opt/google/chrome/chrome --type=gpu-process --channel=128.0.846512492 --supports-dual-gpus=false --gpu-driver-bug-workarounds=2,45,57 -$ 
* root  298 0.0 0.0 11120 1084 ?  S+ 06:05 0:00 grep chrome 

Exécution des mêmes commandes en dehors Docker (où il travaille) Je reçois des messages/erreurs:

Xlib: extension "RANDR" missing on display ":1". 
Xlib: extension "RANDR" missing on display ":1". 
[17750:17750:1119/215139:ERROR:sandbox_linux.cc(338)] InitializeSandbox() called with multiple threads in process gpu-process 

Répondre

10

Problème simple: la définition de la variable d'environnement DISPLAY pour l'appel n'est pas suffisante lors de l'exécution de Chrome. Également besoin de passer un drapeau pour désactiver le GPU puisque le docker n'y a pas accès et désactiver le sandbox. Je dois exporter l'affichage:

export DISPLAY=:0 
Xvfb :0 -screen 0 1024x768x24 & 
google-chrome --disable-gpu --no-sandbox http://mytestpage.com