使用 Nginx 鏡像部署

本節將介紹如何構建站點鏡像,以使用 Nginx 作為網絡服務器為 Hugo 生成的靜態文件提供服務。

Nginx 鏡像

Size

我們提供了一個內置的 Nginx 鏡像 - hugomods/hugo:nginx,其包含了一個默認配置。若其無法滿足你的需求,你完全可以創建你自己的 Nginx 鏡像,而本文將以 hugomods/hugo:nginx 舉例。

創建 Dockerfile

首先於站點根目錄創建 Dockerfile 文件。

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