WabTechs
AccueilBlogDocumentationProjetsPodcastVidéosCommunauté
ConnexionS'inscrire
WabTechs
Quick Link
  • Service
  • Projects
  • Pricing
  • FAQs
  • Contact
Adresse
  • n° 27 bis Katakombe 2 Ngalima Kinshasa RDC
  • contact@wabtechs.com
  • +243 850 060 060

Copyright ©2026, Wabtechs Company All Rights Reserved

GitHubTwitterYouTubeLinkedIn
BlogDocker pour Next.js : Guide de déploiement complet
Retour au blog
Docker
DevOps
Deployment

Docker pour Next.js : Guide de déploiement complet

Dockerisez votre application Next.js avec Dockerfile optimisé, docker-compose pour le développement, et déploiement production.

Emmanuel Mulonda28 juin 202611 min de lecture

Introduction

Docker permet de garantir que votre application fonctionne identiquement en développement et en production. Voici comment dockeriser un projet Next.js.

Dockerfile Optimisé

# Stage 1: Dependencies
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --only=production

# Stage 2: Build
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

# Stage 3: Production
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV production
ENV NEXT_TELEMETRY_DISABLED 1

RUN addgroup --system --gid 1001 nodejs
RUN 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
ENV PORT 3000
ENV HOSTNAME "0.0.0.0"

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

Configuration Next.js

// next.config.ts
const nextConfig = {
  output: "standalone",
  // ... autres options
};

Docker Compose (Développement)

# docker-compose.yml
services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - ./src:/app/src
      - ./public:/app/public
    environment:
      - DATABASE_URL=postgresql://postgres:password@db:5432/wabtechs
      - NEXTAUTH_SECRET=dev-secret
      - NEXTAUTH_URL=http://localhost:3000
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:16-alpine
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: wabtechs
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  postgres_data:

Build & Run

# Développement
docker compose up

# Production
docker compose -f docker-compose.prod.yml up -d

# Build image
docker build -t wabtechs-platform .

# Run
docker run -p 3000:3000 wabtechs-platform

Docker Compose Production

# docker-compose.prod.yml
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=${DATABASE_URL}
      - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
      - NEXTAUTH_URL=${NEXTAUTH_URL}
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000"]
      interval: 30s
      timeout: 10s
      retries: 3

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - app
Docker
DevOps
Deployment
Partager :

Table des matières

  • Introduction
  • Dockerfile Optimisé
  • Stage 1: Dependencies
  • Stage 2: Build
  • Stage 3: Production
  • Configuration Next.js
  • Docker Compose (Développement)
  • docker-compose.yml
  • Build & Run
  • Développement
  • Production
  • Build image
  • Run
  • Docker Compose Production
  • docker-compose.prod.yml
  • Optimisations
  • Multi-Stage Build
  • Taille de l'Image
  • Cache des Dépendances
  • Variables d'Environnement
  • .env.docker
  • Monitoring
  • Logs
  • Stats
  • Shell
  • Conclusion

Articles similaires

Next.js
SEO
8 min
Pourquoi la vitesse de votre site impacte votre SEO (et vos conversions)
Le Core Web Vitals n'est plus une option. Découvrez pourquoi la performance web est le levier le plus rentable pour votre trafic et vos ventes.

28 juillet 2026

TypeScript
DevOps
11 min
Architecturer une API REST de production
Validation, erreurs, rate limiting, logging : les patterns essentiels pour des API routes Next.js fiables et maintenables.

Optimisations

Multi-Stage Build

Le Dockerfile utilise 3 stages pour minimiser la taille finale :

  • deps : installation des dépendances uniquement
  • builder : build de l'application
  • runner : image de production minimaliste

Taille de l'Image

Avec les stages optimisés, l'image finale fait ~150MB au lieu de ~1GB.

Cache des Dépendances

Les COPY package.json séparés permettent de cacher les npm install dans les couches Docker.

Variables d'Environnement

# .env.docker
DATABASE_URL=postgresql://postgres:password@db:5432/wabtechs
NEXTAUTH_SECRET=your-production-secret
NEXTAUTH_URL=https://yourdomain.com

Monitoring

# Logs
docker compose logs -f app

# Stats
docker stats

# Shell
docker exec -it <container_id> sh

Conclusion

Docker est incontournable pour le déploiement moderne. Ce guide vous donne tout ce qu'il faut pour dockeriser votre Next.js en production.

19 juin 2026

TypeScript
Prisma
10 min
Prisma ou Drizzle : comment choisir votre ORM en 2026
Les deux ORM TypeScript dominent l'écosystème. Comparaison honnête sur la DX, la performance, les migrations et la sécurité des types.

24 juillet 2026