本文描述了如何为 Hugo 站点创建 Docker 镜像,以便推送到容器注册中心,并部署于自搭建服务器、Docker Swarm 或 k8s 集群等。
该例子使用 Nginx 作为 Web 服务器,为 Hugo 生成的静态文件提供服务。
创建 Dockerfile
并按需调整,比如回退的 404 页面。
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
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。
1docker build -t user/my-site .