Tutorials  /  JavaScript

Dockerizing Node.js: Entwicklungsumgebung einfach erstellen

Ccentron Redaktion · März 2024 ·4 Min. Lesezeit ·JavaScript, Tutorial

Die Verwendung von Docker kann die Entwicklungs- und Bereitstellungsprozesse erheblich vereinfachen. Insbesondere bei der aktiven Entwicklung einer Anwendung bietet die Containerisierung zahlreiche Vorteile.

In diesem Tutorial zeigen wir Ihnen, wie Sie eine Entwicklungsumgebung für eine Node.js-Anwendung mithilfe von Docker und Docker Compose einrichten können.

Durch die Verwendung von Containern in der Entwicklung ergeben sich mehrere Vorteile:

  • Konsistente Umgebungen: Sie können die Sprachen und Abhängigkeiten für Ihr Projekt auswählen, ohne sich um Systemkonflikte kümmern zu müssen.
  • Isolierte Umgebungen: Dies erleichtert die Fehlersuche und die Einarbeitung neuer Teammitglieder.
  • Portabilität: Sie können Ihren Code einfach verpacken und teilen.

Schritt 1: Projekt klonen und Abhängigkeiten anpassen

Der erste Schritt besteht darin, das Projekt zu klonen und die Abhängigkeiten in der `package.json`-Datei anzupassen. Fügen Sie `nodemon` als `devDependency` hinzu, um automatische Neustarts während der Entwicklung zu ermöglichen.

git clone https://github.com/do-community/nodejs-mongo-mongoose.git node_project

cd node_project

nano package.json

"dependencies": {

"ejs": "^2.6.1",

"express": "^4.16.4",

"mongoose": "^5.4.10"

},

"devDependencies": {

"nodemon": "^1.18.10"

}

VM

Passende Infrastruktur bei centron

Node-Anwendungen wollen deployt werden: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat – oder gleich als Managed Server, wenn der Betrieb nicht bei Ihnen liegen soll. Cloud Server mieten →

Schritt 2: Konfiguration der Anwendung für Container

Passen Sie Ihre Anwendung an, um Sie für die Arbeit mit Containern vorzubereiten. Refaktorisieren Sie den Code, um Umgebungsvariablen zu verwenden und die Verbindung zur Datenbank dynamisch festzulegen.

nano app.js

const port = process.env.PORT || 8080;

app.listen(port, function () {

console.log(`Example app listening on ${port}!`);

});

Schritt 3: Anpassung der Datenbankverbindungseinstellungen

Machen Sie Ihre Datenbankverbindung robuster, indem Sie Code hinzufügen, der Fälle behandelt, in denen die Anwendung keine Verbindung zur Datenbank herstellen kann.

nano db.js

const {

MONGO_USERNAME,

MONGO_PASSWORD,

MONGO_HOSTNAME,

MONGO_PORT,

MONGO_DB

} = process.env;

const options = {

useNewUrlParser: true,

reconnectTries: Number.MAX_VALUE,

reconnectInterval: 500,

connectTimeoutMS: 10000,

};

const url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=admin`;

mongoose.connect(url, options).then( function() {

console.log('MongoDB is connected');

})

.catch( function(err) {

console.log(err);

});

Schritt 4: Definition von Diensten mit Docker Compose

Definieren Sie die Dienste mit Docker Compose, indem Sie die `docker-compose.yml`-Datei mit den Definitionen für Ihre Dienste erstellen.

nano docker-compose.yml

version: '3'

services:

nodejs:

build:

context: .

dockerfile: Dockerfile

image: nodejs

container_name: nodejs

restart: unless-stopped

env_file: .env

environment:

- MONGO_USERNAME=$MONGO_USERNAME

- MONGO_PASSWORD=$MONGO_PASSWORD

- MONGO_HOSTNAME=db

- MONGO_PORT=$MONGO_PORT

- MONGO_DB=$MONGO_DB

ports:

- "80:8080"

volumes:

- .:/home/node/app

- node_modules:/home/node/app/node_modules

networks:

- app-network

command: ./wait-for.sh db:27017 -- /home/node/app/node_modules/.bin/nodemon app.js

db:

image: mongo:4.1.8-xenial

container_name: db

restart: unless-stopped

env_file: .env

environment:

- MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME

- MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD

volumes:

- dbdata:/data/db

networks:

- app-network

networks:

app-network:

driver: bridge

volumes:

dbdata:

node_modules:

Schritt 5: Testen der Anwendung

Testen Sie Ihre Anwendung, indem Sie die Container mit dem Befehl `docker-compose up` erstellen und überprüfen, ob die Datenpersistenz funktioniert.

Fazit

Durch die Containerisierung Ihrer Node-Anwendung mit Docker haben Sie eine flexible und portierbare Entwicklungsumgebung geschaffen. Sie können nun Ihren Code unabhängig von der zugrunde liegenden Infrastruktur entwickeln und bereitstellen.

Dieses Tutorial bietet eine solide Grundlage, um mit der Entwicklung von Anwendungen in Containerumgebungen zu beginnen. Es ist empfehlenswert, weitere Ressourcen zu erkunden, um Ihre Kenntnisse über Docker und Containerisierung zu vertiefen. Dockerizing Node.js: Entwicklungsumgebung einfach erstellen

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren