LoginSignup
11
12

More than 5 years have passed since last update.

最新版hugoでメモ環境をdockerで作ってみる

Posted at

概要

メモ用で、ローカルでmarkdownファイルを作って日付ごとにファイルを作っているけれども
ごちゃごちゃしていてファイルを探すのが大変だし、
文章がちょっと長くなると全体の見通しが悪い。(ブラウザでいい感じに見たい)

grepすればいいけれども、ターミナル上で探すのはちょっと微妙でブラウザから見たくなった。
tocを吐き出すのも出来ないことはないけど、pandocをかますのがちょっと面倒。

用途にあうもので、jekyllとhugoがあるようだ。
sphinxはmarkdownではないのと、昔使っていてなんとなく飽きてしまったので、
今流行りの2つのどっちかを使ってみる。

どうも速度的にかなり早いというhugoを入れてみることにしました。

(なんとなく最新版を使いたくてdockerを使って構築しています。使うだけなら、バイナリをダウンロードする方が圧倒的に楽です。バイナリで良い方は、「基本ファイル作成」セクションまで飛んでOKです。)

手順

  1. goをインストールする
  2. goコマンドでhugoをインストール

dockerfile

インストールしたバージョンは以下の通り

golang version:1.4.2
hugo:0.14-DEV
git:2.3.4
hg:1.4

以下のdockerfileで動きました。

FROM centos:6

# golang install
RUN yum install -y wget tar
RUN cd /tmp && wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz
ENV PATH /usr/local/go/bin:$PATH

# for git
RUN yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
RUN yum install -y gcc
RUN cd /tmp && wget https://www.kernel.org/pub/software/scm/git/git-2.3.4.tar.gz && tar zxvf git-2.3.4.tar.gz && cd git-2.3.4 && ./configure --prefix=/usr/local && make prefix=/usr/local all && make prefix=/usr/local install

# hugo install with go command

ENV GOPATH /root/go
RUN go get -v github.com/spf13/hugo

go getで依存関係のものが$GOPATHにインストールされるようです。

あとはhugoをアップグレードしたいときは

go get -u -v github.com/spf13/hugo

でいけるようです。

gitは、yumでインストールして1.7.1を入れましたが、go get実行時に途中で止まってしまいました。
なので、最新版をコンパイルして入れています。

あと、hgも入れないとgo getのコンパイルが完了しませんでしたので入れてます。

参考URL:http://gohugo.io/overview/installing/

で、dockerfileをおいたディレクトリで以下を実行

% docker build -t hugo:0.14dev ./

dockerで使ってみる

dockerで走らせます。

% docker run -h hugo --name hugo -p 1313:1313 -v ~/hugo:/root/hugo -v /etc/localtime:/etc/localtime:ro -t -i hugo:0.14dev /bin/bash

ローカルとdockerのポートを合わせています。
理由は、

docker側: 172.0.0.1:1313
ホスト側: localhost:8888

みたいにdockerとホストで別ポートにしてしまうと
localhsot:8888にアクセスすると、cssファイルはlocalhost:1313/css/...を見に行ってしまい、
172.0.0.1:1313にアクセスすると、cssファイルはlocalhost:1313/css/...を見に行ってしまい、
見つからなくなってしまうからです。

何かきっと解決策はありそうですが、とりあえずお試しなのであわせています。

また、-vでローカルフォルダ(~/hugo)をマウントしているのは、ローカルのvimを使いたいからです。

もう1つは時刻合わせです。

基本ファイル作成

適当にディレクトリに作成する。

[root@hugo ~]# cd /root/hugo/
[root@hugo ~]# hugo new site ./memo
[root@hugo ~]# ls
go memo
[root@hugo ~]# cd memo
[root@hugo memo]# ls
archetypes  config.toml  content  data  layouts  static
[root@hugo memo]# hugo new 20150324.md
/root/hugo/memo/content/20150324.md created
[root@hugo memo]# ls content
20150324.md
[root@hugo memo]# hugo new post/first.md
/root/hugo/memo/content/post/first.md created
[root@hugo memo]# git clone --recursive https://github.com/spf13/hugoThemes themes
[root@hugo memo]# hugo server --theme=hyde --buildDrafts

ここまでやると、/root/hugo/memo/content以下に20150324.mdファイルが作成されており、これが1313ポートで公開されます。
localhost:1313でアクセスできるはずです。(別のポートかも。コマンドのログにアクセスURLは書いてある)
テーマはデフォルトで用意されているhydeっていうのを使ってみました。

参考URL:http://gohugo.io/overview/quickstart/

autoreload

--watchを渡すと、変更を自動で感知してくれる。

[root@hugo memo]# hugo server --theme=hyde --buildDrafts --watch

ってやると、content/以下のファイルが更新されると、ファイルの変更を感知してブラウザが自動でリロードしてくれます。

table of contents

全体の見通しが悪いのを解決するために、最低限tocはほしい。

テーマがtoc表示に対応していればできるっぽい。

いくつかテーマを変更していったらそれっぽいのがあった。

[root@hugo memo]# hugo server --buildDrafts --watch --theme=redlounge

とりあえずこれで表示された。

使ってみた感想

まだpostとcontentsの違いもわかってないし、tagもつけれるみたい。

s3とかbitbucketに静的コンテンツだけ飛ばして
blogとして使えるのがもともとのウリみたいだけれど、
テーマ変更が簡単だったりwatchも用意されてたりメモ機能としてもなかなか便利。

sphinxのときはwatchするのもbashのスクリプト組んで自前でやってたので、
そういう面も楽かも。
sphinxはテーマもこんなに簡単に変えることができなかったイメージだな。

あと軽いらしいけれども、まだコンテンツ量が少ないので実感はない。

それと、テーマが充実していて、font-awesomeとか入ってるんで、なによりブラウザから見て綺麗。

コミュニティも盛り上がっているし、メモで使うだけにしてもよさそう。

やり始めてから環境構築に1.5時間くらいかかったけど、
上記dockerファイル使うかバイナリならたぶん10分くらいで終わるはずだから、
試す価値はあると思います。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12