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を実行するか、ヘッドレスクロムのサーバー証明書エラーを無視することです。
別の方法(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
を追加します)