Dockerfile 1.3 KB

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