Übung 8
NodeJs mit MongoDB
Erstelle zuerst ein Dockerfile, um die NodeJS Applikation zu bauen.
Level 1
Dann erstelle ein Docker-Compose-File, um die Applikation zu starten. Die Applikation soll aus drei Containern bestehen:
- Ein Container für die NodeJS Applikation.
- Ein Container für die MongoDB (benutze das offizielle Image von mongo:7.0.9-jammy).
- Ein Container für den Mongo-Express-Admin (benutze das offizielle Image von mongo-express:latest).
- Die Applikation soll auf Port 3000 laufen und auf Port 27017 auf die MongoDB zugreifen.
Im Node Container sollen die folgenden Umgebungsvariablen gesetzt werden:
- MONGO_DB_USERNAME=root
- MONGO_DB_PASSWORD=pass
Der Service für die MongoDB soll mongodb heissen die folgenden
Umgebungsvariablen bekommen:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=pass
Der Service für den Mongo-Express-Admin soll mongo-express heissen und auf
Port 8081 angesprochen werden und die folgenden Umgebungsvariablen bekommen:
- ME_CONFIG_MONGODB_SERVER=mongodb
- ME_CONFIG_MONGODB_ADMINUSERNAME=root
- ME_CONFIG_MONGODB_ADMINPASSWORD=pass
Starte dann die Applikation mit docker compose up -d
Dann öffne mongo-express auf http://localhost:8081 und verbinde dich mit der
MongoDB. Erfasse dann eine Datenbank mit dem Namen: my-db und daring eine
Collection mit dem Namen: my-collection.
Dann erfasse ein Dokument in der Collection mit dem Inhalt:
{
"myid": 1,
"mytxt": "Hello from MongoDB"
}
Öffne dann die NodeJS Applikation auf http://localhost:3000 und überprüfe, ob das Dokument angezeigt wird.
Level 2
Erweitere das Docker-Compose-File so, dass die MongoDB Daten in einem Volume gespeichert werden.
Level 3
Im Moment sind die Credentials für die MongoDB im Docker-Compose-File
hardcodiert. Erstelle ein .env File und setze die Credentials dort hinein.
Verwende dann die Credentials aus dem .env File im Docker-Compose-File.
Erstelle zum Schlus ein env-schema File, um die Struktur des benötigten .env
Files zu dokumentieren.