blob: e901b14982124be4d27c216231ca0771efae646a [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
Seamherd6c950f2025-06-09 23:48:28 +080034ENV NEXT_PUBLIC_NGINX_URL=http://team9.10813352.xyz:5009/upload
35ENV PUBLIC_URL=http://team9.10813352.xyz:5009/api
LaoeGaoci6b256102025-06-03 13:51:11 +080036
37# 暴露端口
Seamher11a11b32025-06-09 23:11:58 +080038EXPOSE 3009
LaoeGaoci6b256102025-06-03 13:51:11 +080039
40# 启动命令
41CMD ["node", "server.js"]