Statische HTML-Webseite als Container bereitstellen – Docker-Tutorial

In diesem kurzen Docker Tutorial lernst du, wie du mit Nginx ein Docker-Image für eine statische HTML-Website erstellen kannst.

Das Ziel ist, dass du ein Verständnis dafür bekommst, wie du selbst Docker-Images erstellen und ausführen kannst.

1. Dockerfile erstellen

Docker-Images basieren auf einem Base-Image. Das Base-Image sollte die nötigen Plattform-Dependencies enthalten, die deine fertige Anwendung benötigt. Zwei dieser Voraussetzungen (oder Dependencies) könnten bspw. JVM oder CLR sein.

Dieses Base-Image ist also als Anweisung im Dockerfile definiert. Docker-Images werden basierend auf dem Inhalt des Dockerfiles gebaut. Um das ganze zu vereinfachen, kannst du dir ein Dockerfile, wie eine Liste mit Anweisungen vorstellen, die vorschreibt, wie du deine App bereitstellen willst.

In diesem Tutorial nehmen wir als Base-Image, die alpine-Version von Nginx. Dieses Image stellt den konfigurierten Webserver (Nginx) auf der Linux-Alpine-Distribution zur Verfügung.

Jetzt bist du gefragt. Führe folgende Aufgabe aus:

Erstelle dein Dockerfile für die Erstellung deines Images, indem du den Inhalt unten in einen Text-Editor deiner Wahl (z.B: Notepad++, Sublime-Text 3 usw.) kopierst.

FROM nginx:alpin
COPY ./usr/share/nginx/html

Erklärung:

  1. Die erste Zeile definiert unser Base-Image.
  2. Die zweite Zeile kopiert den Inhalt des aktuellen Verzeichnisses an eine bestimmte Stelle innerhalb des Containers. Hier ist es der Pfad ../nginx/html

2. Docker-Image erstellen

Das Dockerfile wird vom Docker-CLI-Buildbefehl verwendet. Der build-Befehl führt jede Anweisung innerhalb des Dockerfiles aus.

Danach erhältst du ein fertiges Docker-Image, das gestartet werden kann und deine konfigurierte Anwendung ausführt.

Der Befehl build nimmt verschiedene Parameter entgegen. Die Syntax dafür sieht wie folgt aus:

docker build -t <build-directory>

Im obigen Beispiel benutzen wir den -t. Mit -t als Argument kannst du einen gut leserlichen Namen für dein Image verwenden und sogar ein Tag vergeben, dass meist als Versionsnummer benutzt wird. Dadurch kannst du deine erstellten Images besser nachverfolgen und weißt immer, welche Version gestartet wurde.

(Tipp: Wenn du dich intensiver mit dem Thema beschäftigen möchtest, findest du hier die wichtigsten Grundlagen von Docker)

Jetzt bist du gefragt. Deine Aufgabe:

Erstelle das statische HTML-Image mit dem nachfolgend gezeigten build-Befehl:

docker build . -t webserver-img:v01

Mit docker images kannst du dir eine Liste aller Images auf dem Host anzeigen lassen. Das erzeugte Image wird den Namen webserver-img mit dem Tag v01 haben.

3. Starte deinen neuen Container

Das erstellte Image kann jetzt genauso wie alle anderen Docker-Images benutzt und ausgeführt werden. Wenn ein Container gestartet wird, wird er von anderen Prozessen und Netzwerken auf dem Host in eine Sandbox gepackt. Wenn du einen Container startest, musst du ihm Rechte und Zugriff auf das geben, was er benötigt.

Um zum Beispiel einen Netzwerkport auf dem Host zu öffnen und zu binden, musst du den Parameter -p <host-port>:<container-port> angeben.

Jetzt bist du gefragt. Deine Aufgabe:

Starte das neue Image mit seinem Namen (Shortname: webserver-img) und dem Tag (webserver-img:v01).

Da es sich um einen Webserver handelt, binde den Port 80 mit dem Parameter -p an den Host.

Hier ist der Befehl:

docker run -d -p 80:80 webserver-img:v01

Einmal gestartet, kannst du die Ergebnisse von Port 80 über den Befehl curl docker abrufen. Du hast nun eine statische HTML-Webseite, die mit Nginx ausgeführt wird.

Programmierer-Crashkurs für Anfänger...kostenlos!
Baue echte Apps, ohne Vorwissen, ohne Installation!
toolbox 1
Email eintragen und sofort loslegen: