minifyオプションが使えるHugoのDockerコンテナを作った

–minifyオプション なにそれ?

いつのまにかminifyオプションが実装されていた
Hugo >> ASSET MANAGEMENT >> Asset minification

minifyとは?

ブラウザでの描画に使われない改行、空白などを取り除きファイルサイズを削減する機能

パッケージマネージャー(apt)でインストールできるHugoにはまだ来ていないようだったので、debパッケージからインストールすることにした

Dockerfileで試行錯誤したい

Dockerfileを書くためにいちいちコンテナをビルドしていたら完成前に挫けてしまう
Dockerfileを作成する前にいろいろ試行錯誤する

$ docker run -it ubuntu:18.04 sh 
# # ここからコンテナ内
# ここで試行錯誤したいコマンドを次々実行してみる
# exit
# # これでコンテナから抜ける

うまくいったものだけをDockerfileに書き残す

とりあえず書いてみたDockerfile

FROM ubuntu:18.04

## Ubuntu18.04の環境を構築する
RUN set -x && \
 apt-get update -qq && \
 DEBIAN_FRONTEND=noninteractive apt-get -y -qq install wget language-pack-ja && \
 update-locale LANG=ja_JP.UTF-8 && \
 echo export LANG=ja_JP.UTF-8 >> /root/.bashrc && \
 rm -rf /var/lib/apt/lists/*

## Hugoをインストールする
RUN set -x && \
 wget -O /root/hugo_latest_Linux-64bit.deb https://github.com/gohugoio/hugo/releases/download/v0.52/hugo_0.52_Linux-64bit.deb && \
 dpkg -i /root/hugo_latest_Linux-64bit.deb && \
 rm /root/hugo_latest_Linux-64bit.deb

EXPOSE 1313

CMD test -f /website/local.sh ; /website/local.sh

/website/local.shはコンテナにマウントするパス(=コンテンツを永続化するための置き場所)に

$ cat local.sh 
#!/bin/bash
hugo server --bind=0.0.0.0 --baseUrl="//localhost/" --theme=[なにか適当なテーマ] --buildDrafts --buildFuture

な感じのスクリプトを書いておくと、コンテナを実行するだけでHugoのローカルサーバーを使っていい感じに作業ができる

Dockerイメージをビルドする

$ docker build -t hugo:v052 .

Dockerコンテナを実行する

docker run -it --rm -p 1313:1313 -v /Volumes/website/takeuchi.tk:/website hugo:v052