Conteneuriser une application React/Next.js
Écrivez un Dockerfile à plusieurs étapes pour une application Next.js et exécutez-la localement avec Docker Compose.
Conteneuriser une application React/Next.js est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.
Pourquoi Docker ?
Les conteneurs Docker regroupent votre application et ses dépendances, ce qui garantit un comportement cohérent en développement, en préproduction et en production. La même image s’exécute partout.
Fichier Docker pour une SPA React simple
Une construction en deux étapes : Node.js pour construire l’application, Nginx pour servir la sortie statique.
# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Serve with Nginx
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]Configuration de Nginx pour le routage d’une SPA
Configurez Nginx pour servir index.html pour toutes les routes (prise en charge du routage côté client).
# nginx.conf
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html; # SPA routing
}
location ~* \.(js|css|png|jpg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}Fichier Docker en mode autonome de Next.js
Next.js 12+ prend en charge output: 'standalone', qui copie uniquement les fichiers requis pour une image de production minimale.
// next.config.js
module.exports = { output: 'standalone' };
# Dockerfile (Next.js standalone)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-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
CMD ["node", "server.js"].dockerignore
Excluez les fichiers inutiles du contexte de construction Docker afin d’accélérer les constructions et de réduire la taille de l’image.
node_modules
.next
dist
.env*
.git
README.md
*.test.tsConstruction et exécution
Construisez l’image et exécutez-la localement.
# Build:
docker build -t my-next-app .
# Run:
docker run -p 3000:3000 -e DATABASE_URL=postgres://... my-next-app
# Check size:
docker images my-next-appDocker Compose pour le développement local
Utilisez Docker Compose pour exécuter l’application avec ses dépendances (base de données, Redis) à l’aide d’une seule commande.
# docker-compose.yml
services:
web:
build: .
ports: ['3000:3000']
environment:
DATABASE_URL: postgresql://postgres:password@db:5432/myapp
depends_on: [db]
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:Vérifications d’état
Ajoutez une vérification d’état au Dockerfile afin que les orchestrateurs sachent quand le conteneur est prêt.
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:3000/api/health || exit 1Variables d’environnement à l’exécution
Transmettez les variables d’environnement au moment de docker run ou via --env-file. N’intégrez jamais de secrets à l’image.
docker run -p 3000:3000 \
--env-file .env.production \
my-next-appConstructions multiplateformes
Construisez des images pour plusieurs architectures de processeur (ARM64 pour les Mac M1 et les machines virtuelles cloud, AMD64 pour la plupart des serveurs) avec Docker Buildx.
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t myregistry/my-next-app:latest \
--push .Vérification rapide
Quel est l’avantage d’utiliser des constructions Docker en plusieurs étapes pour une application React/Next.js ?
Récapitulatif
Utilisez des Dockerfiles en plusieurs étapes : Node.js pour la construction, Nginx ou node:alpine pour le service. Ajoutez output: 'standalone' dans la configuration Next.js pour obtenir des images minimales. Utilisez Docker Compose pour le développement local, transmettez les secrets à l’exécution via des variables d’environnement et construisez des images multiplateformes avec Buildx pour assurer la compatibilité ARM et AMD64.
Questions Fréquemment Posées
La leçon « Conteneuriser une application React/Next.js » est-elle gratuite ?
Oui — le texte complet de « Conteneuriser une application React/Next.js » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Conteneuriser une application React/Next.js » ?
Écrivez un Dockerfile à plusieurs étapes pour une application Next.js et exécutez-la localement avec Docker Compose. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer React Academy ?
Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Conteneuriser une application React/Next.js » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon React Academy ?
Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Déployer sur Vercel : configuration nulle et URL de prévisualisation
- Héberger une SPA React sur AWS S3 et CloudFront
- Conteneuriser une application React/Next.js
- CI/CD GitHub Actions pour React