Dockerfile.prod 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # # Install dependencies only when needed
  2. # FROM node:alpine AS deps
  3. # # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
  4. # RUN apk add --no-cache libc6-compat
  5. # RUN npm install -g pnpm
  6. # WORKDIR /app
  7. # # 复制 pnpm 相关文件
  8. # COPY package.json pnpm-lock.yaml .npmrc* ./
  9. # # 使用 pnpm 安装依赖
  10. # RUN pnpm install --frozen-lockfile
  11. # # Rebuild the source code only when needed
  12. # FROM node:alpine AS builder
  13. # WORKDIR /app
  14. # # 安装 pnpm
  15. # RUN npm install -g pnpm
  16. # # 复制依赖
  17. # COPY --from=deps /app/node_modules ./node_modules
  18. # COPY . .
  19. # # 使用构建参数
  20. # ARG MONGODB_URI
  21. # ENV MONGODB_URI=$MONGODB_URI
  22. # # 使用 pnpm 构建
  23. # RUN pnpm build
  24. # # Production image, copy all the files and run next
  25. # FROM node:alpine AS runner
  26. # WORKDIR /app
  27. # ENV NODE_ENV production
  28. # RUN addgroup -g 1001 -S nodejs
  29. # RUN adduser -S nextjs -u 1001
  30. # # 复制必要文件
  31. # COPY --from=builder /app/public ./public
  32. # COPY --from=builder /app/package.json ./package.json
  33. # COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
  34. # COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
  35. # USER nextjs
  36. # EXPOSE 3000
  37. # ENV PORT 3000
  38. # ENV NEXT_TELEMETRY_DISABLED 1
  39. # CMD ["sh", "-c", "if [ -d .next/standalone ]; then node .next/standalone/server.js; else node_modules/.bin/next start; fi"]
  40. # ... [前面的部分保持不变] ...
  41. # Production image, copy all the files and run next
  42. FROM node:18-alpine AS runner
  43. WORKDIR /app
  44. ENV NODE_ENV production
  45. # 安装 dos2unix 并修复可能的行结束符问题
  46. RUN apk add --no-cache dos2unix
  47. RUN addgroup -g 1001 -S nodejs
  48. RUN adduser -S nextjs -u 1001
  49. # 复制必要文件
  50. COPY --from=builder /app/public ./public
  51. COPY --from=builder /app/package.json ./package.json
  52. COPY --from=builder /app/node_modules ./node_modules
  53. COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
  54. COPY --from=builder /app/next.config.mjs ./next.config.mjs
  55. # 修复可能的行结束符问题
  56. RUN dos2unix /app/node_modules/.bin/next
  57. # 设置正确的权限
  58. RUN chown -R nextjs:nodejs /app
  59. USER nextjs
  60. EXPOSE 3000
  61. ENV PORT 3000
  62. ENV NEXT_TELEMETRY_DISABLED 1
  63. # 使用 pnpm 启动应用
  64. CMD ["pnpm", "start"]