Stellen Sie mehrere Ports in einem Docker-Container bereit
- Erstellen Sie eine NGINX-Anwendung
- Erstellen Sie eine Dockerdatei
- Erstellen Sie ein Bild
- Führen Sie einen Docker-Container mit mehreren Ports aus
- Testen der Ports
- Abschluss
Im Internet finden verschiedene Arten der Kommunikation statt, und die häufigsten umfassen die Dateiübertragung, das Versenden von E-Mails und das Bereitstellen von Webseiten. Damit diese Kommunikation möglich ist, nutzen wir Portnummern, die helfen, den Kommunikationstyp zu identifizieren.
Beispielsweise verwendet File Transfer Protocol die Ports 20 und 21, Simple Mail Transfer Protocol verwendet 25 und Hypertext Transfer Protocol verwendet 25.
In ähnlicher Weise verwenden Docker-Container Ports, um die Kommunikation zwischen verschiedenen Geräten im World Wide Web zu ermöglichen. In diesem Tutorial lernen wir, wie Sie mehrere Ports in einem Docker-Container mithilfe einer Nginx-Anwendung verfügbar machen.
Erstellen Sie eine NGINX-Anwendung
Öffnen Sie WebStorm IDEA und wählen Sie Datei>Neu>Projekt
. Wählen Sie im sich öffnenden Fenster Leeres Projekt
und ändern Sie den Projektnamen von unbenannt
in web-app
.
Drücken Sie abschließend die Schaltfläche Erstellen, um ein leeres Projekt zu erstellen.
Beachten Sie, dass wir auch jede andere Entwicklungsumgebung verwenden können, da es keine Rolle spielt, welche Entwicklungsumgebung verwendet wird. Da NGINX zur Bereitstellung statischer Inhalte verwendet wird, benötigen wir keine weiteren Konfigurationsdateien.
Sobald das Projekt generiert ist, erstellen Sie eine Datei mit dem Namen index.js
im Ordner web-app
und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Welcome to Nginx !</h1>
</body>
</html>
Diese Datei enthält eine einfache Webseite mit einer Überschrift, die uns beim Testen der Anwendung hilft. Ändern Sie den HTML-Inhalt, um jeden gewünschten Inhalt anzuzeigen.
Erstellen Sie eine Dockerdatei
Erstellen Sie eine Datei namens Dockerfile
im Ordner web-app
und kopieren Sie die folgenden Anweisungen und fügen Sie sie in die Datei ein.
FROM nginx:1.23.1-alpine
ADD . /usr/share/nginx/html
FROM
– Legt das Basis-Image fest, auf dem unser benutzerdefiniertes Image erstellt werden soll, und in unserem Fall haben wiralpine
verwendet, um die Lightweight-Version von NGINX zu ziehen.ADD
– Kopiert die Dateien und Ordner im aktuellen Ordner in das Dateisystem unseres Images unter/usr/share/nginx/html
.
Erstellen Sie ein Bild
Öffnen Sie mit der Tastenkombination ALT+F12 ein neues Terminalfenster auf der Entwicklungsumgebung und erstellen Sie mit folgendem Befehl ein Image mit dem Tag web-app:latest
.
~/WebstormProjects/web-app$ docker build --tag web-app:latest .
Dieser Befehl führt unser Dockerfile
aus, und wir können die beiden nacheinander ausgeführten Anweisungen anzeigen, wie unten gezeigt.
=> [1/2] FROM docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c3740 0.2s
=> => resolve docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c3740 0.2s
=> CACHED [2/2] ADD . /usr/share/nginx/html
Führen Sie einen Docker-Container mit mehreren Ports aus
Verwenden Sie in demselben Terminalfenster, das zum Erstellen eines Images verwendet wird, den folgenden Befehl, um einen Container namens web-app-prod
mit den Ports 3000 und 5000 auf dem Host auszuführen, der Port 80 des Containers überwacht.
~/WebstormProjects/web-app$ docker run --name web-app-prod -d -p 3000:80 -p 5000:80 web-app:latest
Um mehrere Ports auf dem Container verfügbar zu machen, haben wir zwei aufeinanderfolgende -p
-Flags verwendet, die zwei verschiedene Ports auf dem Host zuweisen, um Port 80 auf dem Container zu überwachen.
Testen der Ports
Um zu überprüfen, ob unser Container wie erwartet funktioniert, öffnen Sie einen beliebigen Browser und stellen Sie eine Anfrage an localhost:3000
(http://localhost:3000/) und localhost:5000
(http://localhost:5000/). Da die Ports auf denselben Container hören, erhalten wir dieselbe Seite unserer NGINX-Anwendung, die von den beiden Anfragen zurückgegeben wird, wie unten gezeigt.
Abschluss
In diesem Tutorial haben wir gelernt, wie man mehrere Ports in einem Docker-Container verfügbar macht, indem man eine NGINX-Anwendung nutzt. Beachten Sie, dass dies die gebräuchlichste Methode ist, um mehrere Ports verfügbar zu machen, aber es gibt andere Ansätze, die wir verwenden können, um dasselbe Ziel zu erreichen.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub