Web 配置器

为 Web 应用生成优化的多阶段构建 Dockerfile

配置选项

⚠️ 需要在 next.config.js 中配置 output: "standalone"

Dockerfile
1# Generated by DockerFit (https://tools.eastondev.com/docker)
2# Next.js + pnpm + Node 20
3# Optimized multi-stage build ✓
4
5# ========== Stage 1: Install dependencies ==========
6FROM node:20-alpine AS deps
7
8# Enable pnpm
9RUN corepack enable pnpm
10
11WORKDIR /app
12
13# Copy package files
14COPY package.json pnpm-lock.yaml ./
15
16# Install dependencies with cache
17RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
18 pnpm install --frozen-lockfile
19
20# ========== Stage 2: Build ==========
21FROM node:20-alpine AS builder
22
23RUN corepack enable pnpm
24
25WORKDIR /app
26
27# Copy dependencies from deps stage
28COPY --from=deps /app/node_modules ./node_modules
29COPY . .
30
31# Disable Next.js telemetry
32ENV NEXT_TELEMETRY_DISABLED=1
33
34# Build the application
35RUN pnpm build
36
37# ========== Stage 3: Production ==========
38FROM node:20-alpine AS runner
39
40WORKDIR /app
41
42# Set production environment
43ENV NODE_ENV=production
44ENV NEXT_TELEMETRY_DISABLED=1
45ENV HOSTNAME="0.0.0.0"
46
47# Create non-root user for security
48RUN addgroup --system --gid 1001 nodejs && \
49 adduser --system --uid 1001 appuser
50
51# Copy standalone build (requires output: 'standalone' in next.config.js)
52COPY --from=builder --chown=appuser:nodejs /app/.next/standalone ./
53COPY --from=builder --chown=appuser:nodejs /app/.next/static ./.next/static
54COPY --from=builder --chown=appuser:nodejs /app/public ./public
55
56USER appuser
57
58EXPOSE 3000
59
60CMD ["node", "server.js"]
推荐部署平台

Railway - 开发者友好的部署平台

专业的容器托管平台,支持 Dockerfile 一键上线,注册立享 $20 新用户奖励。

  • 注册即领 $20 体验金
  • 支持 Dockerfile & GitHub 自动部署
  • 真正的按量计费,起步成本极低
  • 内置 PostgreSQL, Redis 等数据库
领取 $20 赠金

使用提示

  • • 开启 Next.js standalone 模式可大幅减小镜像体积
  • • 使用 pnpm 获得更快的安装速度
  • • 添加 .dockerignore 排除 node_modules 和 .next

构建运行

构建并运行容器化应用:

docker build -t my-app . && docker run -p 3000:3000 my-app