本节将介绍如何构建站点镜像,以使用 Nginx 作为网络服务器为 Hugo 生成的静态文件提供服务。
成为我们的资助者或赞助商,以支持我们的工作。
我们提供了一个内置的 Nginx 镜像 - hugomods/hugo:nginx
,其包含了一个默认配置。若其无法满足你的需求,你完全可以创建你自己的 Nginx 镜像,而本文将以 hugomods/hugo:nginx
举例。
首先于站点根目录创建 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
10# Replace below build command at will.
11RUN hugo --minify --enableGitInfo
12# Set the fallback 404 page if defaultContentLanguageInSubdir is enabled,
13# please replace the `en` with your default language code.
14# RUN cp ./public/en/404.html ./public/404.html
15
16#####################################################################
17# Final Stage #
18#####################################################################
19FROM hugomods/hugo:nginx
20# Copy the generated files to keep the image as small as possible.
21COPY --from=builder /src/public /site
/src/public
)。hugomods/hugo:nginx
默认站点目录为 /site
)。1docker build \
2 -t user/my-site:test \
3 --build-arg HUGO_BASEURL=http://localhost:8080 \
4 .
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
-t
指定镜像名称和标签。--build-arg HUGO_BASEURL=http://localhost:8080
覆盖 baseURL
。现在构建的站点可以于 http://localhost:8080/ 进行预览。
当你对测试结果感到满意后,就可以构建生产环境的镜像,然后将其推送到容器仓库,再部署到服务器、K8s 集群等。
1docker build -t user/my-site .