Mac OS X上のdockerでjekyll環境を作ってgithub pagesのテストをする
いい加減deployしてtry and errorするのも疲れてきたのでローカルにjekyll環境を作ろうと決心する。 ただローカルにrubyなんて入れてたくないので、docker環境も作る事にする。
Mac OS X上のdocker環境
MacのdockerはGUIだ(!)との事なので、brew installじゃなくてbrew cask installじゃなきゃダメだよ、とこちらに書いてあったので、何も考えずにbrew cask install docker
を実行する。
Error: Calling brew cask install is disabled! Use brew install [--cask] instead.
何それ。まぁいいや、言われた通りやってみよう。
> brew install --cask docker
...
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
おや、なんかApplications下に入るのか。 そういえば以前仕事で使ってた時はVirtual Boxとかいろいろダウンロードして入れて使ってたのをうっすらと思い出してきた。
設定はGUIでやるっぽいのでCmd+SpaceでスポットライトからDockerで起動してみる。
なんか次へとか適当に押しているとパスワード聞かれたりして、なんかチュートリアルが始まる。 え?そんなの要らないんだけど。 という事で左下のSkip tutorialを選ぶ。
この状態でターミナルからdocker --version
したらそれっぽい結果が帰ってきた。右上のアイコンでrunningと言っているから、この状態だと使えるっぽいかな。
jekyllイメージ
次にjekyll環境。 dockerのイメージとしてはjekyll/jekyllというのがあるね。
> docker pull jekyll/jekyll
jekyllのビルドをすると何が出来るんだろう?
一通り作業が終わったあとに比較したら_site
と.jekyll-cache
が出来るだけっぽいので、これを.gitignoreに追加して、普通にgithub pagesをcloneしたディレクトリで作業すれば良いか。
> cd karino2.github.io
リンク先のgithubを見ている感じだと、このworkをvmountすれば良さそうかな。
> docker run --rm --volume="$PWD:/srv/jekyll" -it jekyll/jekyll jekyll build
ビルドは出来た。 serveを試すにはどうしたらいいんだ? 公式のDockerfile見ていると4000番でアクセスするっぽいか?
> docker run --rm --volume="$PWD:/srv/jekyll" -it -p 4000:4000 jekyll/jekyll jekyll serve
これでブラウザからhttp://localhost:4000
でアクセス出来た。いかにも忘れそうなのでシェルスクリプトにしておく。
追記: RelativeLinksを使いたい場合は以下
リンクで.mdファイルへのリンクを貼ったものがGithub Pages上では動くがローカルでは動かない。
これはjekyll-relatie-links
というプラグインがやっているらしい。
これが入っているdocker imageは無いかな?と探したら幾つかあるのだが、どうもjekyll/jekyllと同じ使い方では動かないので自分で書く事にした。
以下のようなDockerfileを書いて、
kotlin-web-site-ja/docker at master · karino2/kotlin-web-site-ja
$ pushd docker
$ docker build -t karino2/jekyll .
$ popd
とかして、以下のように実行しています。
$ docker run --rm --volume="$PWD:/srv/jekyll" -it -p 4000:4000 karino2/jekyll jekyll serve
config.ymlには書かなくても有効になっているっぽい。