# ==========================================
# 1. Build Stage
# ==========================================
FROM node:22-alpine AS builder

# 启用 corepack 并安装 pnpm
RUN corepack enable && corepack prepare pnpm@9 --activate

# 设置工作目录
WORKDIR /app

# 复制依赖相关文件
COPY package.json pnpm-lock.yaml ./

# 安装依赖项
RUN pnpm install --frozen-lockfile

# 复制项目源代码
COPY . .

# 执行打包构建（将生成 .output 目录）
RUN pnpm run build

# ==========================================
# 2. Production Stage
# ==========================================
FROM node:22-alpine AS runner

# 设置工作目录
WORKDIR /app

# 设置生产环境变量（Nuxt/Nitro 默认会读取这些变量）
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=3000

# 仅复制构建产物（.output 目录包含了运行所需的所有内容）
COPY --from=builder /app/.output ./.output

# 暴露端口
EXPOSE 3000

# 启动 Node.js 服务器
CMD ["node", ".output/server/index.mjs"]
