web-dev-qa-db-ja.com

NOTヘッドレスchromeをdockerコンテナで実行します

chromeがヘッドレスの場合のみ、Dockerマシンでchromeを実行できます。残念ながら、ヘッドレスchromeは証明書エラーを無視できませんテストの実行を妨げます。

既に動作しているNodeJS e2eテスト環境をdockerコンテナーで実行しようとしています。ほとんどのテストはパスしましたが、サイトで証明書が必要な場合はアクセスできません。ヘッドレスなしchrome私は単に認証エラーを無視できます。コンテナにインストールされている基本のDockerイメージはNode:8です。

{browserName: 'chrome'、chromeOptions:{binary:puppeteer.executablePath()、args:['--lang = en-US'、 '-headless'、 '-no-sandbox'、 '-ignore-証明書エラー ']}}

期待される結果は、Dockerコンテナーでguiを使用してchromeを実行するか、ヘッドレスクロムのサーバー証明書エラーを無視することです。

7
Bishok

別の方法(Nils De Moorによって here で説明されています)は、DockerコンテナーをローカルマシンのXサーバーに接続させることです。

IPアドレスが192.168.0.2だとします。

Xディスプレイへのトンネルは、socatを使用して、ポート6010(ディスプレイ192.168.0.2:10に対応)に設定できます。セキュリティのために、range引数は、マシンのIPアドレスからの接続のみを受け入れるようにsocatに要求します。

socat TCP-LISTEN:6010,reuseaddr,fork,range=192.168.0.2/32 UNIX-CLIENT:\"$DISPLAY\" &

これで、開始時に-eを使用して、Dockerコンテナー内のDISPLAY変数を設定できます。

docker run -e DISPLAY=192.168.0.2:10 gns3/xeyes

chromeの場合、chromeにさらに権限が必要になるため、リンクされた投稿に記載されているように、いくつかの複雑な問題があります(つまり、--privilegedを追加します)

0
larsr