为 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 .