ブログ(Hakyll)のデプロイをDockerを使って高速化した

Posted on February 1, 2018 , Tags: Haskell, TravisCI, Hakyll, Docker

このブログのデプロイが遅いのが苦痛だったので対策した。

問題点

このブログはTravisCIでデプロイしているのだが、一ヶ月に1回くらいしか更新しないためか、キャッシュもあまり効かず、毎回30分くらいはかかってしまう。(キャッシュが効くときは3分くらいでおわることもある。)
TravisCIで行っているデプロイ手順としては以下のようになっている。

  1. Stackの準備
  2. GHCの準備
  3. Hakyllとブログ用Haskellコードのコンパイル
  4. ブログ用のMarkdownをHTMLに変換
  5. GitHub Pagesにデプロイ

このうち、1-3まではほぼ毎回変わらないにも関わらず、この時間が大きな部分を占めていた。

解決方法

上記1-3までを行ったDocker imageをあらかじめ用意して、TravisCI上は

  1. Docker imageのpull
  2. ブログ用のMarkdownをHTMLに変換
  3. GitHub Pagesにデプロイ

のみで済むようにした

デプロイ用Docker imageの作成

  • ライブラリをいろいろインストールするのが面倒だったので buildpack-deps:jessie から作るようにした
  • リポジトリを一個作って、Docker HubでAutomated Buildされるようにした。 yoshitsugu/yoshitsugu.github.io-deployer-docker

.travis.yml の修正

不要なライブラリを消去してinstall部分も以下のように修正した。

  • 旧バージョン
  • 新バージョン

結果

  • 以前
    以前
  • 現在
    現在
    速くなった