# 多阶段构建:Hugo Extended(官方 ghcr.io)+ Go runtime(golang:alpine) # 两个基础镜像均通过华为云 SWR 代理拉取,无需直连 Docker Hub / ghcr.io # Stage 1: 从华为云镜像缓存的官方 ghcr.io 取 Hugo Extended 二进制 FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/gohugoio/hugo:v0.147.6 AS hugo-bin # 将 hugo 二进制复制到固定路径(不同版本镜像 hugo 所在路径可能不同) RUN cp $(which hugo) /tmp/hugo # Stage 2: 以 golang:alpine 为运行时(包含 Go,Hugo Modules 必需) FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/golang:1.23-alpine # git:hugo mod 拉取依赖必需;nodejs + npm:Docsy PostCSS 编译必需 RUN apk add --no-cache git nodejs npm # 从 Stage 1 复制 Hugo 二进制(路径已在 stage 1 统一固定为 /tmp/hugo) COPY --from=hugo-bin /tmp/hugo /usr/local/bin/hugo # 预置 Docsy 主题及其依赖(bootstrap、font-awesome)到镜像内 # 避免服务器 init 时直连 GitHub(国内网络不稳定) COPY docsy /opt/docsy COPY bootstrap /opt/bootstrap COPY fontawesome /opt/fontawesome # 注意:不在此处 npm install # Hugo 要求 node_modules 必须在工作目录(/src)内,init 脚本会在 /src 执行 npm install WORKDIR /src ENTRYPOINT ["hugo"]