Docker ContainerにChromeをインストールする

Oct 23, 2022 09:00 · 944 words · 2 minute read Docker

Docker ContainerにChromeをインストールしたので、メモを残しておきます。

目次

環境

python:3.10.8-buster

検証時は下記のコマンドでDcoker Container を実行しました。

docker container run -it --name selenium-scrape-sample1 --mount type=bind,source="$(pwd)"/src/,target=/mnt --rm python:3.10.8-buster bash

Chromeをインストール

コンテナで下記のコマンドを実行して、Chromeをインストールします。 Dockerfileに書くときは「-y」を追加してあげれば、そのまま動くはず。

apt update
apt install x11vnc xvfb fluxbox wget wmctrl gnupg2
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
apt update
apt install google-chrome-stable

動作確認

コンテナで下記のコマンドを実行すると、スクリーンショットが保存されます。

google-chrome --no-sandbox --headless --disable-gpu --screenshot="screenshot_$(date +"%Y%m%d").png" --window-size=1280,1080 https://www.ugtop.com/spill.shtml

実際に保存された画像がこちら。 HeadlessChrome 106.0.5249.119が動いていることがわかります。

Seleniumも使ってみる(Driverでエラー)

Dcoker ContainerにChromeをインストールしたら、次にやりたいことはSeleniumを使った自動化です。

今回インストールしたChromeの安定版に一番近いバージョンのchromedriver-binaryをインストールしましたが、PythonからSelenium動かそうとするとDriverでエラーが発生。 他にもいくつかのバージョンのchromedriver-binaryを試しましたが、同じくエラー。

pip install selenium
pip install chromedriver-binary==106.0.5249.61.0

2022年10月20日頃の時点では、最新のChrome Stable版で正常に動作するdriverを見つけることができなかったので、一旦諦めました。

最後に

Docker環境にChromeをインストールし、久しぶりにSeleniumを使ってみました。SeleniumはDriverとの相性問題を度々聞いていましたが、今回自分でもエラーに遭遇しました。

E2Eテストを自動化したい場合、以前使って比較的安定していたCodeceptJSか、もしくはMicrosoftが開発しているPlaywrightを使うのがいいのかもしれません。

参照URL

tweet Share