Deployment Strategies
Vercel, AWS, Docker, Kubernetes, and production optimization.
Overview
Choose the right deployment strategy based on your needs.
Key Concepts
- Vercel — Zero-config Next.js deployment
- AWS Amplify — AWS-hosted Next.js
- Docker — Containerized deployment
- Kubernetes — Orchestration for large apps
- Edge Deployment — Global edge network
Code Examples
// next.config.js for production
module.exports = {
output: 'standalone',
images: {
unoptimized: false,
formats: ['image/avif', 'image/webp']
},
experimental: {
optimizeCss: true
}
};
# Dockerfile
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
FROM node:18-alpine AS runner
WORKDIR /app
ENV NODE_ENV production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
ENV PORT 3000
CMD ["node", "server.js"]
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/mydb
depends_on:
- db
db:
image: postgres:14
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=mydb
Practice
Deploy a Next.js app to Vercel and set up a Docker deployment.