Eigenes Dockerfile für Node/Express
Mit einem Dockerfile lässt sich ein individuelles Docker-Image für eine Node.js- bzw. Express-Anwendung erstellen. Das Dockerfile ist eine Textdatei, in der die einzelnen Schritte beschrieben sind, um aus dem Quellcode ein lauffähiges Image zu bauen.
Aufbau eines Dockerfiles (Beispiel: Express-App)
Abschnitt betitelt „Aufbau eines Dockerfiles (Beispiel: Express-App)“Hier ein einfaches Beispiel für eine Node.js-/Express-Anwendung:
# Basis-Image: Offizielles Node.js-ImageFROM node:20
# Arbeitsverzeichnis im Container festlegenWORKDIR /usr/src/app
# package.json und package-lock.json kopierenCOPY package*.json ./
# Abhängigkeiten installierenRUN npm install
# Quellcode kopierenCOPY . .
# Port freigeben, auf dem die App läuftEXPOSE 3000
# Startbefehl der AppCMD ["node", "index.js"]Erläuterungen:
FROM: Legt das Basis-Image fest (z. B. node:20)WORKDIR: Setzt das Arbeitsverzeichnis im ContainerCOPY: Kopiert Dateien/Verzeichnisse in den ContainerRUN: Führt einen Befehl beim Image-Build aus (z. B.npm install)CMD: Startet den Container mit dem angegebenen Befehl
Minimales Express.js-Grundgerüst
Abschnitt betitelt „Minimales Express.js-Grundgerüst“Damit du direkt testen kannst, hier das Grundgerüst für eine Express-App.
Lege im Projektverzeichnis eine Datei index.js mit folgendem Inhalt an:
import express from "express";
const app = express();const PORT = 3000;
app.get("/", (req, res) => { res.send("Hallo von Express und Docker!");});
// Beispiel: zweite Routeapp.get("/ueber-uns", (req, res) => { res.send("Das ist die 'Über uns'-Seite.");});
app.listen(PORT, "0.0.0.0", () => { console.log(`Server läuft auf http://localhost:${PORT}`);});Und eine passende package.json (Ausschnitt):
{ "name": "express-docker-demo", "type": "module", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "express": "^4.18.2" }}Tipp: Die Zeile "type": "module" in der package.json ist wichtig für das Verwenden von import.
Aufgabe
Abschnitt betitelt „Aufgabe“Im nächsten Kapitel folgt, wie vorhandene Images aus DockerHub gesucht und eingesetzt werden können.
Danke für Ihr Feedback!