Dockerコンテナ内で使うディストリビューションはAlpine Linuxがマイブームですm( )m
Dockerfileはこんな感じ。
FROM alpine:3.3 RUN apk update && \ apk add xvfb dbus firefox imagemagick ruby libffi && \ apk add --virtual=build-deps gcc make libc-dev ruby-dev libffi-dev && \ gem install --no-ri --no-rdoc selenium-webdriver && \ gem install --no-ri --no-rdoc json && \ dbus-uuidgen && \ mkdir /tests && \ apk del build-deps && \ rm -rf /var/cache/apk/* ENV DISPLAY :1 CMD Xvfb :1 -screen 0 1024x768x24
とりあえず、xvfbを動かすのに必要なのがこれら。
- xvfb
- dbus
dbusはdbusパッケージにあるdbus-genuuidを実行しておかないと、xvfb実行時にエラーになります。
--virtualを使ってインストールしているところは、gemのインストール時にビルドが必要になるので、そこで使うものをグループ化してインストール。gemのインストールが終わったら消してます。
後はこのようなdocker-compose.ymlを作成。
version: "2" services: selenium: hostname: selenium build: . volumes: - ./tests:/tests:rw
Dockerfileがあるディレクトリにtestsを作って、そこに下のファイルを置いて、
#!/usr/bin/env ruby require 'selenium-webdriver' driver = Selenium::WebDriver.for :firefox driver.navigate.to "http://www.kernel.org" driver.save_screenshot("./screenshot.png") driver.quit
docker-compose upでコンテナを起動して、別のターミナルからdocker-compose execで起動中にコンテナに入って、/testsに移動してrubyのコードを動かすと、こんなスクリーンショットが撮れます。
- 作者: 古賀政純
- 出版社/メーカー: インプレス
- 発売日: 2015/12/17
- メディア: Kindle版
- この商品を含むブログを見る