使用 Nginx 镜像部署

本节将介绍如何构建站点镜像,以使用 Nginx 作为网络服务器为 Hugo 生成的静态文件提供服务。

赞助

成为我们的资助者或赞助商,以支持我们的工作。

赞助商

Nginx 镜像

Size

我们提供了一个内置的 Nginx 镜像 - hugomods/hugo:nginx,其包含了一个默认配置。若其无法满足你的需求,你完全可以创建你自己的 Nginx 镜像,而本文将以 hugomods/hugo:nginx 举例。

创建 Dockerfile

首先于站点根目录创建 Dockerfile 文件。

Dockerfile
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-dockerfile" data-lang="dockerfile"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c">#####################################################################</span><span class="err">

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

  1. build 阶段构建站点并将生成的文件保存于发布文件夹(默认为 /src/public)。
  2. final 阶段将于 build 阶段生成的文件复制到 Nginx 站点目录(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
  1. -t 指定镜像名称和标签。
  2. --build-arg HUGO_BASEURL=http://localhost:8080 覆盖 baseURL

现在构建的站点可以于 http://localhost:8080/ 进行预览。

构建并推送镜像

当你对测试结果感到满意后,就可以构建生产环境的镜像,然后将其推送到容器仓库,再部署到服务器、K8s 集群等。

1docker build -t user/my-site .