在容器中运行 OINK

使用 Hugo Extended 容器构建和预览 OINK 站点。

容器并非必需:OINK 本身只需要 Hugo Extended。如果团队希望固定工具镜像,或不想在开发者工作站上安装 Hugo,可以选择容器方式。

创建 Hugo 镜像

下面的 Dockerfile 从发布包安装当前验证过的 Hugo Extended 版本。请让该版本始终与主题支持矩阵保持一致。

FROM debian:bookworm-slim

ARG HUGO_VERSION=0.164.0
ARG TARGETARCH

RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates curl git \
    && curl -L -o /tmp/hugo.deb \
      "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-${TARGETARCH}.deb" \
    && apt-get install -y /tmp/hugo.deb \
    && rm -rf /var/lib/apt/lists/* /tmp/hugo.deb

WORKDIR /src
EXPOSE 1313
ENTRYPOINT ["hugo"]
CMD ["server", "--bind", "0.0.0.0", "--disableFastRender"]

在站点根目录构建镜像:

docker build -t oink-hugo .

镜像构建过程会下载 Hugo。在网络隔离环境中,请预先镜像基础镜像和 Hugo 软件包,或者将 OINK 完整离线发行包与获准使用的内部镜像组合使用。

预览站点

挂载完整站点源码,包括相邻存放或随站点提供的主题:

docker run --rm -it \
  -p 1313:1313 \
  -v "$PWD:/src" \
  oink-hugo

打开 http://localhost:1313/。宿主机上的变更会被容器中的 Hugo 实时重载进程检测到。

执行生产构建

覆盖默认的 server 命令:

docker run --rm \
  -v "$PWD:/src" \
  oink-hugo --gc --minify

生成的站点会写入挂载源码目录中的 public/。请确保容器用户对该目录具有写权限;在共享环境中,应按本地策略映射用户 ID 或修正文件所有权。

这个镜像不需要 Node.js、npm、PostCSS,也不应包含远程浏览器资源步骤。