# ──────────────────── # 第一步:构建阶段 # ──────────────────── FROM node:20 AS builder WORKDIR /app COPY package*.json yarn.lock ./ COPY .env . RUN yarn install --frozen-lockfile COPY . . RUN yarn build # ──────────────────── # 第二步:运行阶段 # ──────────────────── FROM node:20-slim AS runtime WORKDIR /app # 拷贝构建产物 COPY --from=builder /app/.output .output COPY --from=builder /app/node_modules ./node_modules # 只拷贝必要的运行文件(不执行 yarn install) # 如果 Nuxt 构建产物已完整,可不再安装依赖 # COPY package*.json yarn.lock ./ # RUN yarn install --production --frozen-lockfile # ✅ 安装 serve 用于启动 SSR 服务 RUN npm install -g serve # 暴露端口 EXPOSE 8091 # tell Nitro to listen on 0.0.0.0:8091 ENV HOST=0.0.0.0 ENV PORT=8091 # 启动 Nuxt SSR 服务 CMD ["bash"] # CMD ["node", ".output/server/index.mjs"]