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
参考リンク