# syntax=docker/dockerfile:1.7 # # cdrop-base — 重型依赖的预热镜像。 # 只有 go.mod/go.sum 或 web/package*.json 变动时才需要重建;改源码后构建 # cdrop:latest 就只需要复制源 + 编译,省掉 npm ci 与 go mod download 的耗时。 # # 同时安装 Go 工具链与 Node 运行时,让最终的应用 Dockerfile 不再需要 multi-stage # 切换基础镜像。 # # 构建(一次或随依赖更新;走宿主原生 arch 即可): # docker buildx build -f docker/Dockerfile.base -t cdrop-base:latest --load . FROM --platform=$BUILDPLATFORM golang:1.26-alpine AS base # Node.js + npm,覆盖 web 端依赖;ca-certificates 给 go mod download 用 HTTPS RUN apk add --no-cache nodejs npm ca-certificates git WORKDIR /src # Go modules 缓存层 COPY go.mod go.sum ./ RUN go mod download # npm 缓存层 WORKDIR /src/web COPY web/package.json web/package-lock.json ./ RUN npm ci --no-audit --no-fund WORKDIR /src