25 lines
666 B
Docker
25 lines
666 B
Docker
# 多阶段骨架:完整多架构发布见 Q4。
|
|
# 语法阶段:Node 构建前端 → Go 编译(嵌入前端)→ distroless 运行。
|
|
|
|
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
|
|
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 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"]
|