Docker Schnellstart – Statische Webapp erstellen

Webapps mit Docker ausführen

Wir haben uns nun mit docker run beschäftigt, mit einem Docker Container gespielt und auch ein paar Begriffe kennengelernt. Bewaffnet mit all diesem Wissen sind wir nun bereit, uns dem eigentlichen Thema zu widmen, nämlich dem Deployment von Webanwendungen mit Docker!

Lass uns mit einfachen Schritten beginnen. Als erstes schauen wir uns an, wie wir eine ganz einfache statische Website betreiben können. Wir werden ein Docker-Image von Docker Hub ziehen, den Container starten und sehen, wie einfach es ist, einen Webserver zu betreiben.

Lass uns beginnen. Das Image, das wir verwenden werden, ist eine simple Webseite, die ich bereits für diese Übung erstellt habe und die in der Docker-Registry gehostet wird, unter lerneprogrammieren/webapp.

Docker Image mit "docker run -rm" von einem Repository ziehen & ausführen

Wir können das Image direkt in einem Rutsch mit docker run herunterladen und ausführen. Wie bereits erwähnt, entfernt das --rm Flag den Container automatisch, wenn er beendet wird.

docker run --rm lerneprogrammieren/webapp

Da das Image nicht lokal existiert, wird der Client zuerst das Image aus der Registry holen und dann das Image ausführen.

Wenn alles gut geht, solltest du eine Nginx is running... Nachricht in deinem Terminal sehen.

Ports freigeben für Docker Container

Okay, jetzt wo der Server läuft, wie kann man die Webseite sehen? Auf welchem Port läuft er? Und was noch wichtiger ist, wie können wir den Container direkt von unserer Hostmaschine (deinem Computer) aus ansprechen? Drücke Strg+C, um den Container zu stoppen.

In diesem Fall gibt der Client keine Ports frei, also müssen wir den Befehl docker run erneut ausführen, um Ports freizugeben. Wenn wir schon dabei sind, sollten wir auch einen Weg finden, dass unser Terminal nicht mit dem laufenden Container verbunden ist. Auf diese Weise kannst du dein Terminal einfach schließen und den Container weiterlaufen lassen. Dies nennt man detached mode.

docker run -d -P --name webapp lerneprogrammieren/webapp

Im obigen Befehl wird -d unser Terminal abkoppeln, -P wird alle exponierten Ports auf zufällige Ports veröffentlichen und schließlich entspricht --name einem Namen, den wir vergeben wollen. Jetzt können wir die Ports sehen, indem wir den Befehl docker port [CONTAINER] ausführen

docker port webapp

Ausgabe:

Du kannst die Adresse https://localhost/PORT in deinem Browser öffnen. PORT steht hier für die Nummer des geöffneten Ports. In meinem Fall ist das der Port 49155. Daher rufe ich die Demo-Webapp über  https://localhost/49155 auf

Unseren Docker-Container an einen Port binden

Lass uns noch einen Schritt weiter gehen, und einen Container mit der Webapp an einen bestimmten Port binden.

Führe folgenden Befehl aus, um die WebApp an den Port 8888 zu binden:

docker run -p 8888:80 lerneprogrammieren/webapp

Ausgabe im Terminal:

Rufe die WebApp nun über die Browser-Adressleiste auf: https://localhost:8888

Und siehe da, der Container wurde mit unserem Web-App Image gestartet. Ebenso wurde ein Nginx-Server gestartet, der uns die Inhalte des Containers darstellt.

Ausgabe im Browser:

Diesen Inhalt bekommst du unter localhost:8888 angezeigt, wenn du die obigen Schritte ausgeführt hast.

Den Container wieder stoppen

Um einen losgelösten Container zu stoppen, führe docker stop aus, indem du die Container-ID angibst. In diesem Fall können wir den Namen webapp verwenden, den wir zum Starten des Containers verwendet haben.

docker stop webapp

Ich bin mir sicher, du stimmst zu, dass das super einfach war. Um dies auf einem echten Server zu implementieren, müsstest du nur Docker installieren und den obigen Docker-Befehl ausführen. Nachdem du nun gesehen hast, wie man einen Webserver in einem Docker-Image laufen lässt, fragst du dich bestimmt - wie erstelle ich mein eigenes Docker-Image? Dieser Frage werden wir in den nächsten Lektionen nachgehen.