Containerisierung von JavaScript: Docker für Node.js und Frontend

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

Warum Ihr JavaScript-Projekt Docker verdient?

\n\n

Haben Sie jemals den Satz gehört: „Auf meinem Rechner hat es funktioniert!“? Wenn Sie JavaScript-Entwickler sind, sind Sie bestimmt schon auf die Situation gestoßen, dass die Anwendung lokal einwandfrei läuft, aber auf dem Server oder beim Kollegen mit einem mysteriösen Fehler abstürzt. Die Containerisierung von JavaScript-Anwendungen mit Docker löst dieses Problem ein für alle Mal.

\n\n

Docker ermöglicht es Ihnen, Ihren Code, alle Abhängigkeiten (npm-Pakete), Umgebungsvariablen und sogar die Node.js-Version in einen einzigen, leichten „Container“ zu packen. Dieser Container läuft auf Ihrem Laptop, auf einem Server in AWS und auf dem Computer eines Anfängers, der gerade Git installiert hat, identisch. In diesem Artikel werden wir uns ansehen, wie man JavaScript und Docker zusammenbringt, echten Code schreibt und ein production-ready Image für Ihr nächstes Pet-Projekt erstellt.

\n\n

Grundlagen von Docker für JavaScript-Entwickler

\n\n

Bevor wir in den Code eintauchen, lassen Sie uns die wichtigsten Konzepte klären. Docker ist wie eine virtuelle Maschine, aber viel leichter. Anstatt ein ganzes Betriebssystem zu emulieren, nutzt es den Kernel des Hosts und isoliert nur Ihre Anwendung.

\n\n

Dockerfile – Das Rezept Ihrer Anwendung

\n\n

Dies ist eine Textdatei, in der Sie beschreiben, wie das Image erstellt werden soll. Für eine Node.js-Anwendung sieht ein typisches Dockerfile so aus:

\n\n
# Verwenden des offiziellen Node.js-Images\nFROM node:18-alpine\n\n# Arbeitsverzeichnis im Container festlegen\nWORKDIR /app\n\n# Kopieren von package.json und package-lock.json\nCOPY package*.json ./\n\n# Abhängigkeiten installieren\nRUN npm ci --only=production\n\n# Kopieren des Quellcodes\nCOPY . .\n\n# Port freigeben\nEXPOSE 3000\n\n# Befehl zum Starten\nCMD ["node", "server.js"]
\n\n

Beachten Sie: Wir kopieren zuerst package.json und dann den gesamten Code. Das ist kein Zufall. Docker cached die Schichten, und wenn Sie die Abhängigkeiten nicht geändert haben, wird der Schritt npm ci bei jeder Codeänderung nicht neu ausgeführt. Das beschleunigt den Build erheblich.

\n\n

Images und Container

\n\n
    \n
  • Image – Das ist eine Vorlage. Sie bauen es einmal.
  • \n
  • Container – Das ist eine laufende Instanz des Images. Sie können 10 Container aus einem Image erstellen.
  • \n
\n\n

Eine Node.js-Anwendung von Grund auf neu erstellen und containerisieren

\n\n

Lassen Sie uns eine einfache Express-Anwendung schreiben und in Docker verpacken. Dies ist unser erster praktischer Schritt zur Containerisierung von JavaScript.

\n\n

Schritt 1: Die Anwendung schreiben

\n\n

Erstellen Sie einen Ordner docker-node-app und darin eine Datei server.js:

\n\n
const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n  res.json({ \n    message: 'Hallo aus dem Container!',\n    nodeVersion: process.version,\n    environment: process.env.NODE_ENV || 'development'\n  });\n});\n\napp.listen(PORT, () => {\n  console.log(`Server läuft auf Port ${PORT}`);\n});
\n\n

Initialisieren Sie npm und installieren Sie express:

\n\n
npm init -y\nnpm install express
\n\n

Jetzt haben wir eine funktionierende Anwendung. Starten Sie sie lokal: node server.js. Öffnen Sie http://localhost:3000 – Sie sehen JSON.

\n\n

Schritt 2: Dockerfile erstellen

\n\n

Erstellen Sie eine Datei Dockerfile (ohne Erweiterung) im Projektstammverzeichnis:

\n\n
FROM node:18-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production\nCOPY . .\nEXPOSE 3000\nCMD ["node", "server.js"]
\n\n

Fügen wir eine .dockerignore-Datei hinzu, um unnötige Dateien nicht in das Image zu kopieren:

\n\n
node_modules\nnpm-debug.log\n.git\n.gitignore\n.env\nDockerfile
\n\n

Schritt 3: Bauen und starten

\n\n

Öffnen Sie ein Terminal im Projektordner und führen Sie Folgendes aus:

\n\n
docker build -t my-node-app .\ndocker run -p 3000:3000 my-node-app
\n\n

Das Flag

Blogs

Buchempfehlungen