blob: e901b14982124be4d27c216231ca0771efae646a [file] [log] [blame]
# 阶段 1: 构建应用
FROM node:bullseye AS builder
# 设置工作目录
WORKDIR /app
# 安装依赖 (利用 Docker 层缓存)
COPY package.json yarn.lock* package-lock.json* ./
RUN npm ci --omit=dev
# 复制源代码
COPY . .
# 构建应用 (standalone 模式)
RUN npm run build
# 阶段 2: 创建轻量级运行环境
FROM node:bullseye AS runner
WORKDIR /app
# 不要以 root 用户运行
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
USER nextjs
# 从构建阶段复制必要文件
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
COPY --from=builder --chown=nextjs:nodejs /app/public ./public
# 设置环境变量
ENV NODE_ENV=production
ENV PORT=3009
ENV NEXT_PUBLIC_NGINX_URL=http://team9.10813352.xyz:5009/upload
ENV PUBLIC_URL=http://team9.10813352.xyz:5009/api
# 暴露端口
EXPOSE 3009
# 启动命令
CMD ["node", "server.js"]