| 123456789101112131415161718192021222324252627 |
- # 多阶段构建: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"]
|