0Pricing
React Academy · Lektion

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.ts

Erstellen 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-app

Docker 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 1

Umgebungsvariablen 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-app

Multi-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

  1. Deployment auf Vercel: Zero Config und Preview-URLs
  2. Eine React-SPA auf AWS S3 und CloudFront hosten
  3. Eine React-/Next.js-App in Docker ausführen
  4. GitHub-Actions-CI/CD für React
← Zurück zu React Academy