#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
10 min read
•Question 40 of 47hard

Next.js Deployment Strategies

Production deployment patterns and considerations.

Deployment Strategies

Vercel Deployment

$ terminalBash
# Zero-config deployment
vercel

# Production deployment
vercel --prod

# Environment variables
vercel env add MONGODB_URI production

Docker Deployment

code.txtDOCKERFILE
# Dockerfile
FROM node:18-alpine AS base

FROM base AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build

FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production

RUN addgroup --system nodejs
RUN adduser --system nextjs

COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs
EXPOSE 3000
ENV PORT 3000

CMD ["node", "server.js"]

Standalone Output

code.txtTSX
// next.config.js
module.exports = {
  output: 'standalone',
};

// Results in:
// .next/standalone/server.js - Minimal server
// .next/standalone/node_modules - Only production deps

Static Export

code.txtTSX
// next.config.js
module.exports = {
  output: 'export',
  // Optional: Change base path
  basePath: '/docs',
  // Optional: Trailing slashes
  trailingSlash: true,
};

Environment Configuration

$ terminalBash
# .env.production
DATABASE_URL=prod-url
NEXT_PUBLIC_API_URL=https://api.example.com

# Runtime environment (not in bundle)
# Set in deployment platform
STRIPE_SECRET_KEY=sk_live_xxx