# ============================================================ # Stage 1: 构建前端 (Vue 3 + Vite) # ============================================================ FROM node:23-alpine AS frontend-builder WORKDIR /build COPY frondend/package*.json ./ RUN npm ci COPY frondend/ ./ RUN npm run build # ============================================================ # Stage 2: 构建后端 (Go + Fiber) # ============================================================ FROM golang:1.26-alpine AS backend-builder WORKDIR /build ENV GOPROXY=https://goproxy.cn,direct COPY backed/go.mod backed/go.sum ./ RUN go mod download COPY backed/ ./ RUN go build -ldflags="-s -w" -o server ./cmd/server/ # ============================================================ # Stage 3: 运行时镜像(仅含二进制 + 前端静态文件) # ============================================================ FROM alpine:latest RUN apk add --no-cache ca-certificates tzdata # 时区固定为北京时间(tzdata 已安装;进程层 main.go 另有 time.Local 兜底) ENV TZ=Asia/Shanghai COPY --from=backend-builder /build/server /app/server COPY --from=frontend-builder /build/dist /app/dist WORKDIR /app EXPOSE 8093 CMD ["./server"]