# ---- 构建前端 ----
FROM node:24-alpine AS build
WORKDIR /app
RUN npm install -g pnpm@10.34.7
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
RUN pnpm install --frozen-lockfile
COPY . .
RUN pnpm build-only

# ---- 运行 ----
FROM node:24-alpine
WORKDIR /app
ENV NODE_ENV=production \
    PORT=3000 \
    DATA_DIR=/data
RUN npm install -g pnpm@10.34.7
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
RUN pnpm install --prod --frozen-lockfile && npm uninstall -g pnpm
COPY server ./server
COPY shared ./shared
COPY --from=build /app/dist ./dist

VOLUME /data
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s \
  CMD wget -qO- http://127.0.0.1:3000/healthz || exit 1

# Node 24 可以直接运行 TypeScript（类型剥离），不需要额外编译
CMD ["node", "--experimental-strip-types", "--disable-warning=ExperimentalWarning", "server/index.ts"]
