Eine React-/Next.js-App in Docker ausführen
Schreiben Sie ein mehrstufiges Dockerfile für eine Next.js-App und führen Sie sie lokal mit Docker Compose aus.
Eine React-/Next.js-App in Docker ausführen ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Docker?
Docker-Container bündeln Ihre App und ihre Abhängigkeiten und sorgen so für ein konsistentes Verhalten in Entwicklung, Staging und Produktion. Dasselbe Image läuft überall.
Dockerfile für eine einfache React-SPA
Ein zweistufiger Build: Node.js erstellt die Anwendung, Nginx liefert die statische Ausgabe aus.
# 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;"]Nginx-Konfiguration für SPA-Routing
Konfigurieren Sie Nginx so, dass für alle Routen index.html ausgeliefert wird (Unterstützung für clientseitiges Routing).
# 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";
}
}Dockerfile für den Standalone-Modus von Next.js
Next.js 12+ unterstützt output: 'standalone'; dabei werden nur die erforderlichen Dateien kopiert, um ein minimales Produktions-Image zu erstellen.
// 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
Schließen Sie unnötige Dateien aus dem Docker-Build-Kontext aus, um Builds zu beschleunigen und die Imagegröße zu reduzieren.
node_modules
.next
dist
.env*
.git
README.md
*.test.tsErstellen und Ausführen
Erstellen Sie das Image und führen Sie es lokal aus.
# 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 für die lokale Entwicklung
Verwenden Sie Docker Compose, um die Anwendung zusammen mit ihren Abhängigkeiten (Datenbank, Redis) mit einem einzigen Befehl auszuführen.
# 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:Healthchecks
Fügen Sie dem Dockerfile einen Healthcheck hinzu, damit Orchestratoren erkennen, wann der Container bereit ist.
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:3000/api/health || exit 1Umgebungsvariablen zur Laufzeit
Übergeben Sie Umgebungsvariablen beim Aufruf von docker run oder über --env-file. Schreiben Sie Secrets niemals in das Image.
docker run -p 3000:3000 \
--env-file .env.production \
my-next-appMulti-Plattform-Builds
Erstellen Sie mit Docker Buildx Images für mehrere CPU-Architekturen (ARM64 für M1-Macs und Cloud-VMs, AMD64 für die meisten Server).
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t myregistry/my-next-app:latest \
--push .Kurzer Check
Welchen Vorteil bieten Multi-Stage-Docker-Builds für eine React-/Next.js-Anwendung?
Zusammenfassung
Verwenden Sie mehrstufige Dockerfiles: Node.js zum Erstellen, Nginx oder node:alpine zum Ausliefern. Fügen Sie in der Next.js-Konfiguration output: 'standalone' hinzu, um minimale Images zu erstellen. Verwenden Sie Docker Compose für die lokale Entwicklung, übergeben Sie Secrets zur Laufzeit über Umgebungsvariablen und erstellen Sie mit Buildx Multi-Plattform-Images für die Kompatibilität mit ARM und AMD64.
Häufig gestellte Fragen
Ist die Lektion „Eine React-/Next.js-App in Docker ausführen“ kostenlos?
Ja — der vollständige Text von „Eine React-/Next.js-App in Docker ausführen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Eine React-/Next.js-App in Docker ausführen“?
Schreiben Sie ein mehrstufiges Dockerfile für eine Next.js-App und führen Sie sie lokal mit Docker Compose aus. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Eine React-/Next.js-App in Docker ausführen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Deployment auf Vercel: Zero Config und Preview-URLs
- Eine React-SPA auf AWS S3 und CloudFront hosten
- Eine React-/Next.js-App in Docker ausführen
- GitHub-Actions-CI/CD für React