業務の都合で Rails を少しずつ勉強していますが、今度は静的サイトジェネレータの hugo も勉強することになりました。

hugo についてはこちら(HUGOとは?|Let’s study HUGO!!)に詳しく紹介されています。

WordPress のようにサーバー上で動かすものではなく、自分の PC 内で作業をして生成した HTML などのファイルをサーバーにアップロードする、言ってみれば昔 Dreamweaver でやっていたみたいな感じですが、記事は基本的に Markdown 形式で書いたり Github と組み合わせるとサーバーへの反映にイケてる方法を使えたりと、エンジニアさんにとってはワクワクするもののようです。

そして例によって自分の PC に開発環境を構築しなければいけないわけで、他の開発環境と同じく Docker で構築することにしました。

WordPress とは違って Docker Hub にはまだ公式のコンテナは無いようなので Dockerfile から作っていくことになるのですが、有り難いことに Dockerfiledocker-compose.yml を公開してくれている Web サイトを見付けました。

[Docker知識不要]Docker上でのHugo環境の作り方

自分の環境は次のとおり。

  • Windows 10 Pro (バージョン 1803)
  • Docker Community Edition Version 18.03.1-ce-win65 (17513)

こちらで紹介されている Dockerfile でも動作はしたのですが、最後の行の

CMD hugo server -b ${HUGO_BASE_URL} --bind=0.0.0.0

はコンテナ起動時に強制的に hugo が起動するので、自分が作業を行うコンテナではコメントアウトしました。

また、hugo のバージョンは

ENV HUGO_VERSION 0.55.6

の部分で設定しているので、今後バージョンが変わった場合はこの部分を修正してコンテナを作り直すことになります。

docker-compose.yml は特に大きな変更が必要な部分は無く、自分の作業環境に合わせて変更して、上記の Web サイトの「Hugoの新規サイトを作成する」のコマンドを実行します。

ちなみに

実行するとHugoフォルダ直下siteというフォルダが作成されています。

とありますが、実際は blog というフォルダが作成されます。

hugo の使い方については慣れるまではなかなか感覚が掴めませんでしたが、シンプルなテンプレートを使ってトライ&エラーを重ねていくことで少しずつ分かってきた感じで、参考にした Web サイトは次のとおりです。

まだ、普段使っている hugo の起動コマンドは

hugo server --disableFastRender -D -F -b http://localhost:1313 --bind=0.0.0.0 --ignoreCache

で、どうも --bind=0.0.0.0 が無いと Docker で動作している hugo には接続ができないようです。

また、ファイル更新を自動検知する -w オプションは他の JavaScript ファイルと干渉してたまにエラーを起こすので要注意です。

というか Docker で動かしているからなのか、少なくとも Windows の Docker では -w オプションは利かず手動 (Ctrl + C) で hugo を終了させてもう一度起動する、ということをする必要があります。

ざっくりとですが hugo を触ってみた感想としては、納品後にお客様が Web サイトを更新するようなものには向いていませんが、一度作って終わりだったり、ある程度のスキルが担保できて更新も自社で行うのであれば一つの選択肢として「有り」かなと感じました。

このサイトも hugo で作り直しても良いかも…。


0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください