# ── 1. 构建前端（web 用户端 + admin 管理端）──
FROM node:20-alpine AS web
WORKDIR /app/web
COPY web/package*.json ./
RUN npm config set registry https://registry.npmmirror.com && npm ci
COPY web/ ./
RUN npm run build

FROM node:20-alpine AS admin
WORKDIR /app/admin
COPY admin/package*.json ./
RUN npm config set registry https://registry.npmmirror.com && npm ci
COPY admin/ ./
RUN npm run build

# ── 2. 编译 Go（embed 两份前端产物）──
FROM golang:1.26-alpine AS server
WORKDIR /app/server
ENV GOPROXY=https://goproxy.cn,direct
COPY server/go.mod server/go.sum ./
RUN go mod download
COPY server/ ./
# 用真实构建产物替换 embed 占位目录
COPY --from=web   /app/web/dist            ./internal/webfs/dist
COPY --from=admin /app/admin/dist          ./internal/webfs/admin_dist
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" \
    -o /sundynix-site ./cmd

# ── 3. 运行镜像 ──
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata && \
    adduser -D -u 10001 app
ENV TZ=Asia/Shanghai
COPY --from=server /sundynix-site /usr/local/bin/sundynix-site
USER app
EXPOSE 8090
ENTRYPOINT ["/usr/local/bin/sundynix-site"]
