blob: af2bef1ad8adcadeea4fe0284b4efb3746beb1ea [file] [log] [blame]
LaoeGaoci6b256102025-06-03 13:51:11 +08001# 阶段 1: 构建应用
2FROM node:bullseye AS builder
3
4# 设置工作目录
5WORKDIR /app
6
7# 安装依赖 (利用 Docker 层缓存)
8COPY package.json yarn.lock* package-lock.json* ./
9RUN npm ci --omit=dev
10
11# 复制源代码
12COPY . .
13
14# 构建应用 (standalone 模式)
15RUN npm run build
16
17# 阶段 2: 创建轻量级运行环境
18FROM node:bullseye AS runner
19WORKDIR /app
20
21# 不要以 root 用户运行
22RUN addgroup --system --gid 1001 nodejs
23RUN adduser --system --uid 1001 nextjs
24USER nextjs
25
26# 从构建阶段复制必要文件
27COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
28COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
29COPY --from=builder --chown=nextjs:nodejs /app/public ./public
30
31# 设置环境变量
32ENV NODE_ENV=production
33ENV PORT=3000
34
35# 暴露端口
36EXPOSE 3000
37
38# 启动命令
39CMD ["node", "server.js"]