R+JekyllのDocker imageをつくりました。

6/20にTokyo.RでLTしてきました。

www.slideshare.net

で、ゴミ箱アイコンの方から「Dockerイメージつくれば?」と言われたので、つくってみました。

registry.hub.docker.com

なにか変なところがあればGithubの方にIssueお願いします。

使い方

docker pull

まずイメージを落としてきます。

$ docker pull yutannihilation/r-jekyll

docker run

走らせます。8787はRStudio用、4000は後述するようにJekyll用です。

$ docker run -p 8787:8787 -p 4000:4000 yutannihilation/r-jekyll

RStudioにログイン

ブラウザから http://localhost:8787/ を開いて、ユーザ名もパスワード「rstudio」でログインできます。

servr::jekyll()

すぐ試せるようにyihuiさんのknitr-jekyllレポジトリをクローンしてあるので、以下のコマンドを実行すれば右下のViewerにブログが出てきます。

servr::jekyll("knitr-jekyll")

...と言いたいところだったんですが、やってみると分かりますけどうまくスタイルが当たらず変な表示になります。。

f:id:yutannihilation:20150622064315p:plain:w450

これはRStudio Server特有の問題です。詳しい説明は端折りますが、RStudio Desktopだと

http://localhost:4321/path/to/file

みたいなURLが、RStudio Serverだと

http://localhost:8787/p/4321/path/to/file

になってしまうせいで、CSSのパスが違うようになってしまうのです。。Alas!

jekyll serve

むりやり動かすには、servr:jekyll()ではなくて、本物のjekyllをコマンドラインから使います。

servr::jekyll("knitr-jekyll", serve = FALSE)
system('cd knitr-jekyll; jekyll serve --host 0.0.0.0 &')

http://localhost:4000/knitr-jekyll/ にアクセスすると、ちゃんとスタイルが当たったサイトが見えるはずです。

f:id:yutannihilation:20150622065528p:plain:w450

Jekyllを止める

え、止めるとき? ...うーん、こんな感じでやるしか。。

system('pkill jekyll')

まとめ

RStudio Desktopで手元でやるのがいいと思います!