爲 Hugo 站點創建 Docker 鏡像

本文描述瞭如何爲 Hugo 站點創建 Docker 鏡像,以便推送到容器註冊中心,並部署於自搭建服務器、Docker Swarm 或 k8s 集羣等。

原理

該例子使用 Nginx 作爲 Web 服務器,爲 Hugo 生成的靜態文件提供服務。

創建 Dockerfile

創建 Dockerfile 並按需調整,比如回退的 404 頁面。

Dockerfile
 1###############
 2# Build Stage #
 3###############
 4FROM hugomods/hugo:exts as builder
 5# Base URL
 6ARG HUGO_BASEURL=
 7ENV HUGO_BASEURL=${HUGO_BASEURL}
 8# Build site
 9COPY . /src
10RUN hugo --minify --gc --enableGitInfo
11# Set the fallback 404 page if defaultContentLanguageInSubdir is enabled, please replace the `en` with your default language code.
12# RUN cp ./public/en/404.html ./public/404.html
13
14###############
15# Final Stage #
16###############
17FROM hugomods/hugo:nginx
18COPY --from=builder /src/public /site

測試 Dockerfile

1docker build \
2  -t user/my-site:test \
3  --build-arg HUGO_BASEURL=http://localhost:8080 \
4  .
1docker run -p 8080:80 user/my-site:test

現在你可以通過 https://localhost:8080 測試 Dockerfile。

構建 Docker 鏡像

1docker build -t user/my-site .