# 构建阶段: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"]