ContainerizationArchitect: Ajit Dev (@ajitdev01)Katihar, Bihar, India
Docker Containerization & Image Optimization
Architecting ultra-lean, secure Docker containers. Multi-stage build pipelines, non-root user isolation, layer cache optimization, and multi-service Docker Compose networks engineered by Ajit Dev.
Multi-Stage Build Pipelines
Alpine 118MB Lean Images
Non-Root UID 1001 Security
Layer Cache Acceleration
1. Tested Production Next.js 16 Multi-Stage Dockerfile
Zero Development Bloat Shipped to Production
Production Dockerfile engineered by Ajit Dev for standalone Next.js App Router applications, running under an unprivileged system user:
# Dockerfile — Hardened Multi-Stage Pipeline
FROM node:20-alpine AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
FROM node:20-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3000
# Create unprivileged system user
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 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
CMD ["node", "server.js"]
2. Multi-Service Docker Compose with Network Isolation
Local Dev to Staging Parity
Orchestrating Next.js, Redis, and PostgreSQL with explicit healthcheck dependencies:
# docker-compose.yml — Microservices Topology
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/ajitdev
- REDIS_URL=redis://cache:6379
depends_on:
db:
condition: service_healthy
networks:
- internal-net
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: ajitdev
volumes:
- db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d ajitdev"]
interval: 5s
timeout: 5s
retries: 5
networks:
- internal-net
networks:
internal-net:
driver: bridge
volumes:
db-data: