Hugo環境をDocker上で構築・実行する手順についてまとめます。
HugoにDockerを使うメリットとしては、主に以下があります。
hugo.exe
のダウンロードや環境変数の設定が不要ただし、起動がやや重く、Dockerのイメージサイズも大きいため、個人のブログ執筆のような小規模でやる場合だとあまり恩恵は受けられないかなと思います。
Docker自体の環境構築についてはここでは割愛します。
Hugoのフォルダ内でDockerfile
とcompose.yml
を配置します。Dockerイメージは公式が出しているものがありませんので、今回はサードパーティー製の「hugomods」を使います。
それぞれファイルを以下の通りにします。Hugoのバージョンは最新にします。
1FROM hugomods/hugo:latest
2
3COPY . /src/
4
5EXPOSE 1313
6
7ENTRYPOINT ["hugo", "server", "--bind", "0.0.0.0", "--port", "1313", "-D", "-F"]
1services:
2 hugo:
3 build: .
4 ports:
5 - "1313:1313"
6 develop:
7 watch:
8 - action: sync
9 path: .
10 target: /src
コンテナ起動時は、ターミナルで以下のコマンドを実行します。ホットリロード機能を実現するためにCompose Watch
を利用しています。
1$ docker compose up -d # コンテナ起動
2
3$ docker compose watch # ホットリロード
ローカルでの構築時と同様に、http://localhost:1313/
を開くことでサイトプレビューを確認できます。
新規記事を作成する際は以下のコマンドを実行します。
1$ docker compose exec hugo hugo new <file名> # コンテナ内に新規ファイル作成
2
3$ docker compose cp hugo:/src/content/<file名> . # コンテナからローカルにコピー
今回は、Dockerでブログを構築する方法について紹介しました。ローカルにはブログのソースのみ置けば良いというのがDockerの利点ですね。以上で記事を終わりにします。