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

参考リンク

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤

  • 作者: 橋本直哉,須江信洋,前佛雅人,境川章一郎,佐藤聖規,山田修司,青山尚暉,市川豊,平岡大祐,福田潔,矢野哲朗
  • 出版社/メーカー: 翔泳社
  • 発売日: 2018/03/12
  • メディア: Kindle版
  • この商品を含むブログを見る