Stellen Sie mehrere Ports in einem Docker-Container bereit

David Mbochi Njonge 15 Februar 2024
  1. Erstellen Sie eine NGINX-Anwendung
  2. Erstellen Sie eine Dockerdatei
  3. Erstellen Sie ein Bild
  4. Führen Sie einen Docker-Container mit mehreren Ports aus
  5. Testen der Ports
  6. Abschluss
Stellen Sie mehrere Ports in einem Docker-Container bereit

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
  1. FROM – Legt das Basis-Image fest, auf dem unser benutzerdefiniertes Image erstellt werden soll, und in unserem Fall haben wir alpine verwendet, um die Lightweight-Version von NGINX zu ziehen.
  2. 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.

Ports testen - Localhost 3000

Testen der Ports - Localhost 5000

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 Mbochi Njonge avatar David Mbochi Njonge avatar

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