# 构建阶段 FROM node:alpine AS builder # 设置工作目录 WORKDIR /app # 复制 package 文件 COPY package*.json ./ # 安装所有依赖(包括 devDependencies) RUN npm ci # 复制源代码 COPY . . # 构建应用 RUN npm run build # 生产阶段 FROM node:alpine AS runner # 设置工作目录 WORKDIR /app # 创建非 root 用户 RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs # 复制构建产物(standalone 模式) COPY --from=builder /app/public ./public COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static # 设置正确的权限 RUN chown -R nextjs:nodejs /app # 切换到非 root 用户 USER nextjs # 暴露端口 EXPOSE 3000 # 设置环境变量 ENV NODE_ENV=production ENV PORT=3000 ENV HOSTNAME="0.0.0.0" # 启动应用 CMD ["node", "server.js"]