Docker und JavaScript: Containerisierung von Node.js-Anwendungen von Grund auf

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten
Here is the translated HTML content in German, with all HTML tags preserved and only the text content translated as requested. ```html

Docker und JavaScript: Vollständiger Leitfaden zur Containerisierung von Node.js-Anwendungen



Moderne Webentwicklung ist ohne Containerisierung nicht mehr denkbar. Docker hat sich zum De-facto-Standard für das Verpacken, Ausliefern und Ausführen von Anwendungen in isolierten Umgebungen entwickelt. In diesem Artikel werden wir im Detail besprechen, wie man Docker zur Containerisierung von JavaScript-Anwendungen auf Node.js einsetzt. Sie erfahren, wie Sie ein optimiertes Dockerfile erstellen, Images und Container verwalten und lernen die besten Praktiken kennen.



Was ist Docker und warum braucht ein JavaScript-Entwickler es?



Docker ist eine Plattform für die Entwicklung, Auslieferung und Ausführung von Anwendungen in Containern. Ein Container ist eine leichtgewichtige, eigenständige, ausführbare Umgebung, die alles enthält, was für den Betrieb einer Anwendung benötigt wird: Code, Laufzeitumgebung, Systemwerkzeuge, Bibliotheken und Einstellungen.



Für einen JavaScript-Entwickler, der mit Node.js arbeitet, löst Docker mehrere zentrale Probleme:



  • Reproduzierbarkeit der Umgebung: „Auf meinem Rechner funktioniert es“ ist kein Problem mehr. Docker stellt sicher, dass die Anwendung auf dem Entwicklerrechner, dem CI/CD-Server und in der Produktion identisch läuft.
  • Isolation von Abhängigkeiten: Jede Anwendung erhält ihren eigenen Satz an Abhängigkeiten, ohne mit anderen Projekten zu kollidieren.
  • Vereinfachte Bereitstellung: Ein Docker-Image kann problemlos auf jeder Plattform ausgeführt werden, die Docker unterstützt (Linux, Windows, macOS, Cloud-Server).
  • Skalierung: Container lassen sich mit Orchestratoren wie Docker Compose oder Kubernetes horizontal skalieren.


Erstellen eines Dockerfile für eine Node.js-Anwendung



Ein Dockerfile ist eine Textdatei mit Anweisungen zum Erstellen eines Docker-Images. Wir betrachten die schrittweise Erstellung eines Dockerfile für eine typische Express.js-Anwendung.



Angenommen, wir haben eine einfache Node.js-Anwendung mit der folgenden Struktur:



my-node-app/├── package.json├── package-lock.json├── src/│   └── index.js└── Dockerfile


Inhalt von src/index.js:



const express = require('express');const app = express();const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => { res.send('Hello from Dockerized Node.js!');});

app.listen(PORT, () => { console.log(`Server running on port ${PORT}`);});


Jetzt erstellen wir das Dockerfile:



# Verwenden des offiziellen Node.js-Images der Version 18 (LTS)FROM node:18-alpine

# Festlegen des Arbeitsverzeichnisses innerhalb des ContainersWORKDIR /usr/src/app

# Kopieren der Dateien package.json und package-lock.jsonCOPY package*.json ./

# Installieren der AnwendungsabhängigkeitenRUN npm ci --only=production

# Kopieren des Quellcodes der AnwendungCOPY . .

# Angeben des Ports, den die Anwendung überwachtEXPOSE 3000

# Befehl zum Starten der AnwendungCMD ["node", "src/index.js"]


Wichtige Punkte im Detail:

  • FROM node:18-alpine — wir verwenden ein minimales Image basierend auf Alpine Linux. Dies reduziert die Größe des endgültigen Images erheblich.
  • WORKDIR — legt das Arbeitsverzeichnis fest. Alle nachfolgenden Befehle werden relativ dazu ausgeführt.
  • COPY package*.json ./ — wir kopieren nur die Dateien mit den Abhängigkeiten vor dem Kopieren des Quellcodes. Dies ermöglicht das Caching der Schicht mit der Installation der Abhängigkeiten, falls sich package.json nicht geändert hat.
  • RUN npm ci --only=production — installiert Abhängigkeiten aus der Lock-Datei. Das Flag --only=production schließt dev-Abhängigkeiten (Tests, Linter usw.) aus, was die Image-Größe reduziert.
  • EXPOSE 3000 — dokumentiert, dass die Anwendung Port 3000 überwacht. Dies öffnet den Port nicht automatisch, dient aber als Hinweis für Docker.


Erstellen und Ausführen des Containers



Blogs

Buchempfehlungen