# 多阶段构建：Node 构建前端 → Go 编译（嵌入前端）→ distroless static nonroot。
# 镜像名 git.asio.asia/nixevol/nixmsg；入口 /nixmsg。
# 单架构：task q:docker-build 或 q:docker-push（含推送）。
# 多架构：task q:docker-buildx（linux/amd64 + linux/arm64，需 buildx；正式推送在 Z3）。

FROM node:24-bookworm AS web
WORKDIR /src/web
COPY web/package.json web/pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
COPY web/ ./
RUN pnpm build

FROM golang:1.27-bookworm AS build
ARG TARGETOS=linux
ARG TARGETARCH=amd64
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
COPY --from=web /src/web/dist ./web/dist
ENV CGO_ENABLED=0
RUN GOOS=$TARGETOS GOARCH=$TARGETARCH go build -tags embeddist -o /out/nixmsg ./cmd/nixmsg

FROM gcr.io/distroless/static:nonroot
COPY --from=build /out/nixmsg /nixmsg
USER nonroot:nonroot
ENTRYPOINT ["/nixmsg"]
CMD ["serve"]
