はじめに

以前作成した記事のHugoブログをDockerで構築するでは、DockerHubのイメージ(klakegg/hugo)を使用して構築した。
しかし、最新のHugoのバージョンには対応しておらずどうしたものかと思ったので自前でDockerfileを用意して構築することにした。

環境

1
2
3
Server: Docker Desktop 4.27.1 (136059)
Docker version 25.0.2
Docker Compose version v2.24.3-desktop.1

手順

  1. ブログで使用しているプロジェクトの直下に、 Docker/hugo/Dockerfile を作成する。
  2. compose.ymlを修正する。
  3. Makefile を修正し、エイリアスを定義する。
  4. コンテナを立ち上げる。

Dockerfileの作成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
FROM alpine:3.19.1

# https://github.com/gohugoio/hugo/releases
ARG HUGO_VERSION=v0.111.3

# https://gohugo.io/installation/linux/
RUN apk add --update --no-cache go g++
RUN CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@${HUGO_VERSION}

ENV PATH="/root/go/bin:${PATH}"
WORKDIR /src

EXPOSE 1313
ENTRYPOINT [ "hugo", "server", "--bind", "0.0.0.0", "--port", "1313"]

とした。
最低限のコマンドでインストールしたかったので go, g++のみとし、go installhugoを入れた。

compose.ymlの修正

1
2
3
4
5
6
7
8
9
# https://gohugo.io/installation/linux/#docker
services:
  hugo:
    build:
      context: ./Docker/hugo
    volumes:
      - .:/src
    ports:
      - "1313:1313"

Makefileの修正

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
build:
	docker compose build
up :
	docker compose up -d
serve:
	make up
	docker compose exec hugo hugo server -D

#Usage: make new file=post/tech/tips/aaa.md
new:
	make up
	docker compose exec hugo hugo new $(file)

sh:
	make up
	docker compose exec hugo sh

.PHONY: build up serve new

とした。

コンテナ立ち上げ

1
make up

コンテナを立ち上げる。
コンテナ立ち上げ後に localhost:1313にアクセスする。
接続できていればOK

参考

おわりに

これで最新のバージョンが使用できるのでバージョンアップをしていきたい。
とはいえ、Netlifyが対応しているかどうかも調べておかないといけない。