Docker ist ein Open-Source-Projekt, das Entwicklern und Systemadministratoren eine offene Plattform bietet, um Anwendungen überall als leichtgewichtigen Container zu erstellen, zu verpacken und auszuführen. Docker automatisiert die Bereitstellung von Anwendungen in Softwarecontainern.
Nodejs ist eine Open-Source-JavaScript-Laufzeitumgebung. Es ist eine plattformübergreifende Laufzeitumgebung, die unter Linux, Windows, MacOS, FreeBSD usw. installiert werden kann. Nodejs ist sehr nützlich, um sowohl Server- als auch Desktop-Anwendungen zu erstellen.
In diesem Tutorial zeige ich Ihnen, wie Sie ein Docker-Image für ein vorhandenes Nodejs Express-Anwendungsprojekt in Ubuntu 18.04 erstellen. Wir werden lernen, wie man eine Nodejs-Anwendung andockt und die Anwendung dann als Container in der Docker-Umgebung mithilfe eines docker-compose-Skripts bereitstellt.
Voraussetzungen
- Ubuntu 18.04
- Root-Rechte
Was wir tun werden
- Installieren Sie Docker CE
- Installieren Sie Docker-Compose
- Nodejs Express-Projekt einrichten
- Erstellen Sie das Projekt
- Testen
Schritt 1 – Docker CE installieren
In diesem Tutorial installieren wir die Docker-ce Community Edition aus dem Docker-Repository. Wir werden Docker-ce Community Edition und Docker-Compose installieren, die Version 3 der Compose-Datei unterstützen.
Installieren Sie vor der Installation von Docker-ce die erforderlichen Docker-Abhängigkeiten mit dem Befehl apt.
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Fügen Sie nun den Docker-Schlüssel und das Repository hinzu, indem Sie die folgenden Befehle ausführen.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Installieren Sie das Paket docker-ce.
sudo apt install docker-ce
Nachdem die Installation abgeschlossen ist, starten Sie den Docker-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.
systemctl start docker
systemctl enable docker
Als Nächstes erteilen wir den normalen Benutzern Berechtigungen zum Ausführen und Verwalten des Docker-Containers.
Fügen Sie einen neuen Benutzer namens „mohammad“ hinzu und fügen Sie ihn der Docker-Gruppe hinzu.
useradd -m -s /bin/bash mohammad
usermod -a -G docker mohammad
Melden Sie sich jetzt als Benutzer „mohammad“ an und führen Sie den Docker-Container hello-world.
aussu - mohammad
docker run hello-world
Und Sie erhalten das unten gezeigte Ergebnis.
Schritt 2 – Docker-Compose installieren
In diesem Schritt installieren wir docker-compose manuell aus der Binärdatei, die von GitHub heruntergeladen werden kann. Wir werden die neueste Docker-Compose-Version installieren, die Compose v3 unterstützt.
Laden Sie die neueste Version 1.22.0 von docker-compose mit dem Befehl curl in das Verzeichnis „/usr/local/bin“ herunter und machen Sie sie dann mit chmod ausführbar.
Führen Sie die folgenden Befehle aus.
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Und die neueste Docker-Compose-Version wurde installiert, überprüfen Sie dies, indem Sie den Docker-Compose-Befehl unten ausführen.
docker-compose version
Nachfolgend das Ergebnis.
Schritt 3 – Nodejs Express-Projekt einrichten
In diesem Abschnitt konfigurieren wir die Nodejs-Anwendungsumgebung. Wir werden eine einfache nodejs-Anwendung verwenden, die mit dem 'Express-Generator' generiert werden kann.
Melden Sie sich beim Benutzer „mohammad“ an.
su - mohammad
Erstellen Sie ein neues Verzeichnis mit dem Namen „Projekt“ und gehen Sie dorthin.
mkdir -p project
cd project
Generieren Sie jetzt eine einfache Hello-Word-Nodejs-Anwendung mit dem unten stehenden 'express'-Befehl.
express hakase-app
Hinweis:
Stellen Sie sicher, dass nodejs, npm und die 'Express-Generator'-Pakete auf dem System installiert wurden.
Und Sie erhalten die einfache nodejs-Express-App im Verzeichnis „hakase-app“.
Als Nächstes erstellen wir unser benutzerdefiniertes Docker-Image für die Nodejs-Anwendung „hakase-app“.
Erstellen Sie im Verzeichnis „Projekt“ mit vim ein neues „Dockerfile“.
vim Dockerfile
Fügen Sie dort die folgende Docker-Image-Konfiguration ein.
FROM node:8.11.4-alpine RUN mkdir -p /src RUN npm install express-generator -g WORKDIR /src ADD hakase-app/package.json /src/package.json RUN npm install EXPOSE 3000 CMD node hakase-app/bin/www
Speichern und beenden.
Wir erstellen ein neues benutzerdefiniertes Docker-Image für unsere nodejs-Anwendung mit den folgenden Spezifikationen.
- Das benutzerdefinierte Image basiert auf der alpinen Version des offiziellen nodejs-Image 8.11.4.
- Wir erstellen ein neues Verzeichnis für unser Projekt '/src'.
- Installieren Sie den 'Express-Generator' für das benutzerdefinierte Image.
- Fügen Sie die Datei „package.json“, die das Anwendungsprofil und die benötigten Pakete enthält, zum Verzeichnis „/src“ hinzu.
- Installieren Sie alle für das Projekt erforderlichen nodejs-Pakete basierend auf der Datei „package.json“.
- Exportieren Sie den Port 3000 mit dem Standard-Exec-Startbefehl „node hakase-app/bin/www“.
Als Nächstes erstellen wir das benutzerdefinierte Image basierend auf dem docker-compose-Skript.
Erstellen Sie eine neue YML-Datei „docker-compose.yml“ mit vim.
vim docker-compose.yml
Fügen Sie dort die folgende Konfiguration ein.
version: '3' services: hakase-app: build: . volumes: - ./hakase-app:/src/hakase-app ports: - "3000:3000" restart: always
Speichern und beenden.
Wir erstellen einen neuen Docker-Dienst mit dem Namen „hakase-app“, und gleichzeitig erstellen wir das benutzerdefinierte Docker-Image basierend auf der „Dockerfile“ im Projektverzeichnis und werden automatisch die Hakase-App-Anwendungsdateien bereitstellen.
Die Einrichtung von Nodejs Express ist abgeschlossen.
Schritt 4 – Projekt erstellen und ausführen
Melden Sie sich als 'mohammad'-Benutzer an und gehen Sie zum 'project'-Verzeichnis
su - mohammad
cd project/
Erstellen Sie das Image und erstellen Sie die hakase-app des Docker-Dienstes mit dem Befehl docker-compose unten.
docker-compose build
Jetzt erhalten Sie das unten gezeigte Ergebnis.
Führen Sie nach Abschluss den Docker-Dienst „hakase-app“ aus.
docker-compose up -d
Nachfolgend das Ergebnis.
Das benutzerdefinierte Docker-Image für unsere Nodejs-Anwendung wurde erstellt, und der Docker-Dienst hakase-app ist betriebsbereit.
Schritt 5 – Testen
Verfügbares Docker-Image auf dem Server anzeigen.
docker-compose images
docker images
Ein neues benutzerdefiniertes Docker-Image für unsere Nodejs-Anwendung wurde erstellt.
Zeigen Sie den laufenden Docker-Dienst an.
docker-compose ps
docker ps
Die Nodejs-App läuft auf dem Host-Port 3000.
Öffnen Sie den Webbrowser und geben Sie die Server-IP-Adresse mit dem Port ein.
http://10.0.15.2:3000/
Und Sie erhalten die einfache Express-Seite.
Die Dockerisierung der Nodejs Express-Anwendung auf Ubuntu 18.04 wurde erfolgreich abgeschlossen.