DockerHubのRuby Alpineで作るheadless chrome環境

headless chromeとSelenium WebDriverを使いたいと思ったときすぐ使えるような環境を作る。
Debian環境よりも簡単にインストールすることができたのでAlpine Linuxを使う。

Dockerfile

FROM ruby:2.6.4-alpine3.10

RUN apk add -U chromium chromium-chromedriver

これだけでOK。あとはgemをインストールしてオプションを渡して上げればすぐ使える。
Alpine Linuxのパッケージマネージャapkについてはこちらも要チェック

require 'selenium-webdriver'                                                                                                                                                                            

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument("--no-sandbox")
options.add_argument("--headless")

session = Selenium::WebDriver.for :chrome, options: options

スクリーンショットなど、日本語フォントが必要になった際はGoogle Noto Fontsをインストールすると良い。

Dockerfileに追記

RUN mkdir /noto
ADD https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip /noto
WORKDIR /noto
RUN unzip NotoSansCJKjp-hinted.zip && \
    mkdir -p /usr/share/fonts/noto && \
    cp *.otf /usr/share/fonts/noto && \
    chmod 644 -R /usr/share/fonts/noto/ && \
    fc-cache -fv

参考リンク