Dockerizing Node.js: Entwicklungsumgebung einfach erstellen

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“
}

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.


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.


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.


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

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: