Heim > Web-Frontend > js-Tutorial > So verwenden Sie Node.js mit Docker

So verwenden Sie Node.js mit Docker

Joseph Gordon-Levitt
Freigeben: 2025-02-08 11:49:09
Original
144 Leute haben es durchsucht

Dieses Tutorial zeigt die Vorteile der Verwendung von Docker -Containern für Node.js -Anwendungen und legt einen effizienten Entwicklungs -Workflow fest.

node.js ermöglicht die Erstellung schneller und skalierbarer Webanwendungen, die JavaScript sowohl auf dem Server als auch auf der Client -Seite verwenden. Während Ihre Anwendung möglicherweise fehlerfrei auf Ihrer Entwicklungsmaschine funktioniert, ist die konsistente Leistung in verschiedenen Umgebungen (Kollegenmaschinen, Produktionserver) nicht garantiert. Betrachten Sie diese potenziellen Probleme:

  • Betriebssystemvariationen: Ihre Entwicklungsumgebung kann MacOS sein, während Kollegen Windows verwenden und der Produktionsserver Linux ausführt.
  • node.js Version Inkonsistenz: Sie verwenden vielleicht Node.js 20, andere verwenden verschiedene Versionen.
  • Abhängigkeitsunterschiede: Datenbanken und andere Abhängigkeiten können variieren oder auf verschiedenen Plattformen nicht verfügbar sein.
  • Sicherheitsbedenken: unvorhergesehene Sicherheitsrisiken können beim Bereitstellen von Code für verschiedene Betriebssysteme auftreten.

Schlüsselvorteile

  • plattformübergreifende Kompatibilität: Docker löst das Problem "Es funktioniert auf meinem Computer", indem Node.js-Anwendungen in isolierten Containerumgebungen ausgeführt werden.
  • .
  • vereinfachte node.js App -Bereitstellung in Docker:
  • Wir werden Sie durch das Erstellen eines grundlegenden Node.js -Skripts führen und es in einem Docker -Container ausführen.
  • Enhanced Node.js Development Workflow:
  • Wir zeigen, wie Docker den Entwicklungsprozess für Node.js -Anwendungen optimiert.

Docker -Lösung

Docker befasst sich effektiv mit den oben genannten Kompatibilitätsproblemen. Anstatt Anwendungen direkt zu installieren, führen Sie sie in leichten, isolierten virtuellen maschinenähnlichen Umgebungen aus, die als Container bezeichnet werden.

How to Use Node.js with Docker

Im Gegensatz zu virtuellen Maschinen, die gesamte PC -Hardware und Betriebssysteme emulieren, emuliert Docker ein Betriebssystem und ermöglicht es Ihnen, Anwendungen direkt zu installieren. Es ist üblich, eine Anwendung pro Linux-basierter Container auszuführen und über ein virtuelles Netzwerk für die HTTP-Kommunikation zu verbinden.

Die Vorteile sind zahlreich:
  • Konsistente Umgebung:
  • Ihr Docker -Setup spiegelt Ihren Produktionslinux -Server wider und vereinfacht die Bereitstellung.
  • vereinfachte Abhängigkeitsverwaltung:
  • Abhängigkeiten herunterladen, installieren und konfigurieren.
  • plattformübergreifende Konsistenz:
  • Ihre Container-App verhält sich identisch auf allen Plattformen.
  • Verbesserte Sicherheit:
  • Wenn Ihre App in einem Container fälscht, hat sie keinen Einfluss auf Ihren Host -Computer. Sie können den Behälter problemlos neu starten.

mit Docker, die Installation von Node.js lokal oder Runtime -Manager wie NVM ist unnötig.

Ihr erster Node.js Skript

Docker Desktop (Windows, MacOS oder Linux) installieren. Erstellen Sie ein einfaches Skript namens version.js:

console.log(`Node.js version: ${process.version}`);
Nach dem Login kopieren

Wenn node.js lokal installiert ist, führen Sie sie aus, um die Version anzuzeigen. Führen Sie es nun in einem Docker -Container aus (mit der neuesten LTS -Node.js -Version):

(macOS/linux)

$ docker run --rm --name version -v $PWD:/home/node/app -w /home/node/app node:lts-alpine version.js
Nach dem Login kopieren

(Windows PowerShell)

> docker run --rm --name version -v ${PWD}:/home/node/app -w /home/node/app node:lts-alpine version.js
Nach dem Login kopieren

Der erste Lauf könnte einige Momente dauern, während Docker Abhängigkeiten herunterladen. Nachfolgende Läufe sind viel schneller. Sie können einfach die Versionen von Node.js wechseln (z. B. node:21-alpine). Das Skript wird in einem Linux -Container mit einer bestimmten Node.js -Version ausgeführt.

Befehlsaufschlüsselung:

  • docker run: Startet einen Container aus einem Bild.
  • --rm: Entfernt den Container nach Beendigung.
  • --name version: weist dem Container einen Namen zu.
  • -v $PWD:/home/node/app: montiert das aktuelle Verzeichnis als Volumen im Container.
  • -w /home/node/app: Legt das Arbeitsverzeichnis im Container fest.
  • node:lts-alpine: Gibt das Docker -Bild an (LTS -Node.js auf Alpine Linux).
  • version.js: Der Befehl zum Ausführen.

Docker -Bilder sind in Docker Hub verfügbar und bieten verschiedene Versionen mit Kennungen wie :lts-alpine, 20-bullseye-slim oder latest. Alpine Linux ist eine leichte Verteilung ideal für einfache Projekte.

Ausführen komplexerer Anwendungen

Für Anwendungen mit Abhängigkeiten und Erstellen von Schritten (mit NPM) ist ein benutzerdefiniertes Docker -Image erforderlich. In diesem Beispiel wird Express.js verwendet:

Erstellen Sie ein Verzeichnis namens simple, add package.json:

{
  "name": "simple",
  "version": "1.0.0",
  "description": "simple Node.js and Docker example",
  "type": "module",
  "main": "index.js",
  "scripts": {
    "debug": "node --watch --inspect=0.0.0.0:9229 index.js",
    "start": "node index.js"
  },
  "license": "MIT",
  "dependencies": {
    "express": "^4.18.2"
  }
}
Nach dem Login kopieren

und index.js:

// Express application
import express from 'express';

// configuration
const cfg = {
  port: process.env.PORT || 3000
};

// initialize Express
const app = express();

// home page route
app.get('/:name?', (req, res) => {
  res.send(`Hello ${req.params.name || 'World'}!`);
});

// start server
app.listen(cfg.port, () => {
  console.log(`server listening at http://localhost:${cfg.port}`);
});
Nach dem Login kopieren

Erstellen Sie ein Dockerfile:

# base Node.js LTS image
FROM node:lts-alpine

# define environment variables
ENV HOME=/home/node/app
ENV NODE_ENV=production
ENV NODE_PORT=3000

# create application folder and assign rights to the node user
RUN mkdir -p $HOME && chown -R node:node $HOME

# set the working directory
WORKDIR $HOME

# set the active user
USER node

# copy package.json from the host
COPY --chown=node:node package.json $HOME/

# install application modules
RUN npm install && npm cache clean --force

# copy remaining files
COPY --chown=node:node . .

# expose port on the host
EXPOSE $NODE_PORT

# application launch command
CMD [ "node", "./index.js" ]
Nach dem Login kopieren

Erstellen Sie das Bild: docker image build -t simple .

Führen Sie den Container aus: docker run -it --rm --name simple -p 3000:3000 simple

Zugriff auf die App unter http://localhost:3000/.

a .dockerignore Datei kann verhindern, dass unnötige Dateien in das Bild kopiert werden.

Verbesserter Entwicklungsworkflow mit Docker Compose

Die vorherige Methode ist für die Entwicklung ineffizient. Docker Compose bietet eine bessere Lösung. Erstellen Sie docker-compose.yml:

version: '3'

services:

  simple:
    environment:
      - NODE_ENV=development
    build:
      context: ./
      dockerfile: Dockerfile
    container_name: simple
    volumes:
      - ./:/home/node/app
    ports:
      - "3000:3000"
      - "9229:9229"
    command: /bin/sh -c 'npm install && npm run debug'
Nach dem Login kopieren

Beginnen Sie mit docker compose up. Änderungen zu index.js automatischen Neustarts. Verwenden Sie das Debugger des VS -Code (an Port 9229 anhängen) für ein verbessertes Debugging. Stoppen Sie mit docker compose down.

Schlussfolgerung

Während Docker eine erste Einrichtung benötigt, sind die langfristigen Vorteile von zuverlässigem, verteilbarem Code signifikant. Dieses Tutorial deckt die Grundlagen ab; Erforschen Sie weitere Ressourcen für die fortgeschrittene Nutzung. Die Bilder werden für die Kürze beibehalten.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Node.js mit Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage