In der heutigen schnelllebigen Entwicklungslandschaft hat sich die Containerisierung zu einem bahnbrechenden Ansatz für Webentwickler entwickelt und bietet Umgebungen, die konsistent, portabel und einfach zu verwalten sind. Docker, die beliebteste Containerisierungsplattform, ermöglicht Entwicklern die einfache Erstellung und Verwaltung von Containern und sorgt so für eine reibungslosere Entwicklung und Bereitstellung. Die Kombination von Docker mit Node.js-Frameworks wie Express.js erhöht die Flexibilität der Webentwicklung und ermöglicht Entwicklern das einfache Erstellen, Testen und Bereitstellen von Webanwendungen.
In diesem Artikel erfahren Sie, wie Sie eine Express.js-Anwendung in einem Docker-Container einrichten und entwickeln, wobei wir uns auf die Vorteile konzentrieren, die sie für die Webentwicklung mit sich bringt.
Docker kapselt die Abhängigkeiten der Anwendung in einem Container, was bedeutet:
Für die Webentwicklung mit Express.js stellt Docker sicher, dass Node.js und alle anderen Abhängigkeiten (wie Datenbanken oder Bibliotheken) in einer vom Hostsystem getrennten Umgebung korrekt konfiguriert sind.
Sehen wir uns die Schritte an, die zum Einrichten und Ausführen einer Express.js-Anwendung in einem Docker-Container erforderlich sind.
Erstellen Sie zunächst eine grundlegende Express.js-Anwendung. Wenn Sie es nicht global installiert haben, können Sie Folgendes ausführen:
npx express-generator myapp cd myapp
Dadurch werden eine grundlegende Ordnerstruktur und einige Standarddateien für eine Express.js-App erstellt. Als nächstes installieren Sie alle erforderlichen Abhängigkeiten:
npm install
Eine Docker-Datei definiert die Umgebung und die Anweisungen, die zum Einrichten und Ausführen Ihrer Anwendung erforderlich sind. Hier ist eine Beispiel-Dockerdatei für eine Express.js-Anwendung:
# Use an official Node.js image as the base FROM node:latest AS development # Create and set the working directory inside the container WORKDIR /app # Copy package.json and package-lock.json files to the container COPY package*.json ./ # Install dependencies RUN npm install # Copy the entire application code to the container COPY . . # Expose the port the app runs on EXPOSE 3000 # Run the application CMD ["npm", "start"]
Wenn Ihre Anwendung über mehrere Dienste verfügt (z. B. eine Datenbank), hilft docker-compose.yml dabei, diese zu definieren und zu verwalten. Hier ist eine Beispieldatei „docker-compose.yml“:
services: app: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development
Um einen Container für Ihre Anwendung zu erstellen, öffnen Sie ein Terminal im Stammverzeichnis der Anwendung (wo sich die Docker-Datei befindet) und führen Sie Folgendes aus:
npx express-generator myapp cd myapp
Um den Container dann auszuführen, verwenden Sie:
npm install
Die Anwendung sollte jetzt unter http://localhost:3000 zugänglich sein.
Standardmäßig unterstützt Docker kein Live-Neuladen (bei dem Änderungen im Code automatisch berücksichtigt werden). Sie können dies jedoch mit Hilfe von nodemon erreichen, einem Tool, das auf Dateiänderungen überwacht und den Server automatisch neu startet.
Installieren Sie zunächst Nodemon als Entwicklungsabhängigkeit:
# Use an official Node.js image as the base FROM node:latest AS development # Create and set the working directory inside the container WORKDIR /app # Copy package.json and package-lock.json files to the container COPY package*.json ./ # Install dependencies RUN npm install # Copy the entire application code to the container COPY . . # Expose the port the app runs on EXPOSE 3000 # Run the application CMD ["npm", "start"]
Aktualisieren Sie dann die Docker-Datei, um NODE_ENV auf Entwicklung zu setzen, und aktualisieren Sie den Startbefehl:
services: app: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development
Oder wenn Sie docker-compose.yml verwenden, können Sie den Befehl direkt darin angeben:
docker build -t express-app .
Dieses Setup ermöglicht ein Live-Nachladen, was während der Entwicklung von großem Vorteil ist, da es Zeit spart und die Produktivität steigert.
Um Probleme zu vermeiden, bei denen Abhängigkeiten jedes Mal neu erstellt werden, verwenden Sie Docker-Volumes, um den Quellcode des lokalen Dateisystems im Container bereitzustellen.
In docker-compose.yml:
docker run -p 3000:3000 express-app
Diese Konfiguration synchronisiert Ihren Code zwischen dem Host und dem Container, überschreibt jedoch nicht den Ordner „node_modules“.
Docker bietet verschiedene Optionen zum Debuggen. Sie können Ihrer Anwendung DEBUG-Flags hinzufügen, um die Ausführlichkeit der Protokollierung zu erhöhen, oder Dockers eigene Protokollierungs- und Überwachungsbefehle verwenden:
npm install --save-dev nodemon
Beim Übergang zur Produktion gibt es zusätzliche Schritte zur Optimierung, wie zum Beispiel:
# Install nodemon globally RUN npm install -g nodemon # Run the application using nodemon CMD ["nodemon", "bin/www"]
Vorteile der Entwicklung mit Express.js in Docker
Die Entwicklung einer Express.js-Anwendung in Docker hat erhebliche Vorteile:
Beginnen Sie noch heute mit Docker und Express.js, um zu sehen, wie es Ihre Entwicklungserfahrung verändern kann!
Das obige ist der detaillierte Inhalt vonWebentwicklung in Docker-Containern mit Express.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!