# 构建阶段：bun 安装依赖并产出 dist（vite build）
FROM oven/bun:1-slim AS build
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
COPY . .
RUN bun run build

# 运行阶段：产物 + 全量 node_modules（dist/server 对 react/@tanstack/seroval 等是裸导入）
FROM oven/bun:1-slim
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
COPY --from=build /app/public ./public
COPY --from=build /app/scripts ./scripts
COPY --from=build /app/package.json ./package.json
# public/uploads 由部署侧卷挂载提供（写入与 /uploads 访问同一宿主目录，见 deploy/docker-compose.yml）
EXPOSE 3312
CMD ["bun", "scripts/prod-server.ts"]
