本家の方の↓の記事ではvidiben/casperjs
なるDockerイメージを使っていた。
一応これでも記事の目的は達していたのだが、 GithubみるとインストールされてるCasperJS/PhantomJSのバージョンは古そうだし、 何より日本語ページは化けてしまう。
ページをキャプチャしてどうこうする用途だとこれでは良くない。
そこで日本語がちゃんと表示できるイメージ(のDockerfile)を作成してみた。
npm経由ではPhantomJSのインストールで何かエラー吐くとかCasperJSはちゃんと入ったはずなんだけど何か音信不通になるとかで意外と苦労した。
結果的には必要なものを泥臭く公式からダウンロードして配置する方法で対応。
FROM ubuntu:14.04 RUN apt-get update -y&&\ apt-get install -y libfreetype6-dev libfontconfig1-dev language-pack-ja wget bzip2 git python unifont RUN mkdir /src WORKDIR /src # install phantomJS RUN wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2&&\ tar xvf phantomjs-2.1.1-linux-x86_64.tar.bz2&&\ mv phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/ # install casperJS RUN git clone git://github.com/n1k0/casperjs.git&&\ mv casperjs /opt/&&\ ln -sf /opt/casperjs/bin/casperjs /usr/local/bin/casperjs #make directory RUN mkdir /script WORKDIR /script ENTRYPOINT ["casperjs"] CMD ["--version"]
完成形としてDockerfileにまとめてしまえばなんのことはないが、
PhantomJSは日本語フォントをインストールしつつもlocale
が日本語設定ではいけないなどのややこしさがあって苦労した。
Dockerではなく普通にサーバにインストールする場合はLANG=C
をコマンドの前につけるようにして運用するのがベターなのかもしれない。
※以下、仮にdocker build -t casperjs .
とビルド(=casperjs
という名称を付けた)として
何も指定せずに動かせばバージョン表示。
$ docker run --rm casperjs
1.1.0-beta5
実運用上はディレクトリを/script
としてマウントし、スクリプト名を引数として渡す使い方を想定。
$ docker run --rm -v /your/dir/path:/script casperjs your_script.js
ひとまず目的通り動いている。