Docker - Building a Web Server

Hallo, angehende Programmierer! Heute machen wir uns auf eine aufregende Reise in die Welt von Docker und Webservern. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich Schritt für Schritt durch dieses Abenteuer zu führen. Mach dir keine Sorgen, wenn du neu im Programmieren bist - wir beginnen bei den Grundlagen und arbeiten uns nach oben. Also, hol dir eine Tasse Kaffee (oder dein Lieblingsgetränk) und tauchen wir ein!

Docker - Web Server

Verständnis von Docker und Webservern

Was ist Docker?

Stell dir vor, du ziehst in ein neues Haus. Anstatt alles in zufällige Kisten zu packen, organisierst du deine Gegenstände ordentlich in beschrifteten Containern. Das ist im Wesentlichen, was Docker für Software macht! Es paketiert Anwendungen und deren Abhängigkeiten in standardisierte Einheiten namens Containern. Das macht es einfach, Anwendungen konsistent in verschiedenen Umgebungen zu bewegen, zu bereitstellen und auszuführen.

Was ist ein Webserver?

Ein Webserver ist wie ein digitaler Kellner in einem Restaurant. Wenn du eine Website-Adresse in deinen Browser eingibst, nimmt der Webserver deine Anfrage entgegen, holt die entsprechenden Webseiten und serviert sie dir. Er ist das Rückgrat des Internets, das sicherstellt, dass du jederzeit auf Websites zugreifen kannst.

Erstellung eines einfachen Webservers mit Docker

Schritt 1: Einrichten der Umgebung

Zuerst stellen wir sicher, dass Docker auf unserem Computer installiert ist. Wenn du das noch nicht getan hast, geh zur offiziellen Docker-Website und folge den Installationsanweisungen für dein Betriebssystem.

Schritt 2: Erstellen einer einfachen HTML-Datei

Lassen wir uns mit der Erstellung einer einfachen HTML-Datei beginnen, die unser Webserver anzeigen wird. Erstelle eine neue Datei namens index.html mit folgendem Inhalt:

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mein Docker Webserver</title>
</head>
<body>
<h1>Hallo, Docker Welt!</h1>
<p>Diese einfache Webseite wird von Docker bereitgestellt.</p>
</body>
</html>

Diese HTML-Datei erstellt eine grundlegende Webseite mit einer Überschrift und einem Absatz. Es ist wie das Schreiben eines einfachen Briefes, den unser Webserver den Besuchern zustellt.

Schritt 3: Erstellen des Dockerfiles

Nun erstellen wir unseren Dockerfile. Das ist wie ein Rezept, das Docker anweist, wie es unseren Webserver-Container erstellen soll. Erstelle eine neue Datei namens Dockerfile (ohne Dateierweiterung) mit folgendem Inhalt:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

Lassen wir das auseinanderbrechen:

  • FROM nginx:alpine: Das tells Docker, die offizielle Nginx-Bilddatei basierend auf Alpine Linux als Ausgangspunkt zu verwenden.
  • COPY index.html /usr/share/nginx/html/index.html: Das kopiert unsere HTML-Datei in das Standardverzeichnis, in dem Nginx nach Webseiten sucht.

Schritt 4: Erstellen des Docker-Images

Nun, da wir unser Dockerfile haben, bauen wir unser Docker-Image. Öffne dein Terminal, navigiere zum Verzeichnis, das dein Dockerfile und index.html enthält, und führe aus:

docker build -t my-web-server .

Dieser Befehl weist Docker an, ein Image basierend auf unserem Dockerfile zu erstellen und es als "my-web-server" zu kennzeichnen. Der Punkt am Ende weist Docker an, das Dockerfile im aktuellen Verzeichnis zu suchen.

Schritt 5: Ausführen des Docker-Containers

Wir sind fast fertig! Lassen wir unseren Docker-Container laufen:

docker run -d -p 8080:80 my-web-server

Dieser Befehl führt Folgendes aus:

  • -d: Führt den Container im Hintergrund (detached mode) aus.
  • -p 8080:80: Mapt Port 8080 auf deinem Computer zu Port 80 im Container.
  • my-web-server: Der Name unseres Docker-Images.

Testen unseres Webservers

Nun zum großen Augenblick der Wahrheit! Öffne deinen Webbrowser und gehe zu http://localhost:8080. Du solltest unsere "Hallo, Docker Welt!"-Nachricht sehen. Gratulation! Du hast gerade einen Webserver mit Docker erstellt und bereitgestellt!

Fortgeschrittene Themen

Anpassen der Nginx-Konfiguration

Was ist, wenn wir das Verhalten unseres Webservers anpassen möchten? Das können wir tun, indem wir die Nginx-Konfiguration ändern. Lassen wir uns ein benutzerdefiniertes Nginx-Konfigurationsfile namens nginx.conf erstellen:

server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html;
}

location /api {
return 200 '{"message": "Dies ist eine Beispiel-API-Antwort"}';
add_header Content-Type application/json;
}
}

Diese Konfiguration doet zwei Dinge:

  1. Sie bedient unsere HTML-Datei wie zuvor.
  2. Sie erstellt einen einfachen API-Endpunkt unter /api, der eine JSON-Antwort zurückgibt.

Nun aktualisieren wir unser Dockerfile, um diese Konfiguration zu verwenden:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
COPY nginx.conf /etc/nginx/conf.d/default.conf

Erstelle dein Docker-Image neu und führe es erneut aus. Jetzt, wenn du http://localhost:8080/api besuchst, wirst du die JSON-Antwort sehen!

Schlussfolgerung

Und da habt ihr es, Leute! Wir sind von den Grundlagen von Docker und Webservern bis hin zur Erstellung unseres eigenen angepassten Webserver-Containers gereist. Denkt daran, das ist erst der Anfang. Die Welt von Docker und Webentwicklung ist riesig und aufregend, mit unendlichen Möglichkeiten zum Erkunden.

Hier ist eine schnelle Zusammenfassung der Methoden, die wir gelernt haben, in einer praktischen Tabelle dargestellt:

Methode Beschreibung
docker build Erzeugt ein Docker-Image aus einem Dockerfile
docker run Erstellt und startet einen Docker-Container
docker ps Listet laufende Docker-Container auf
docker stop Stoppt einen laufenden Docker-Container
docker rm Entfernt einen Docker-Container

Übt weiter, erkundet weiter und vor allem, macht Spaß beim Programmieren! Wer weiß? Die nächste große Webanwendung könnte nur ein paar Docker-Container entfernt sein. Bis zum nächsten Mal, fröhliches Coden!

Credits: Image by storyset