blob: 8be866d709e83c01ffa997ee9f1d9996fe9c5015 [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
Seamher11a11b32025-06-09 23:11:58 +080033ENV PORT=3009
LaoeGaoci6b256102025-06-03 13:51:11 +080034
35# 暴露端口
Seamher11a11b32025-06-09 23:11:58 +080036EXPOSE 3009
LaoeGaoci6b256102025-06-03 13:51:11 +080037
38# 启动命令
39CMD ["node", "server.js"]