Bereitstellung eines Webservers mit Docker
Erstellen einer Dockerfile
Um einen Webserver mit Docker bereitzustellen, müssen Sie zuerst eine Dockerfile erstellen. Eine Dockerfile ist eine Textdatei, die die Anweisungen zum Erstellen eines Docker-Images enthält. Hier ist ein Beispiel für eine Dockerfile für einen einfachen Nginx-Webserver:
## Verwenden Sie das offizielle Nginx-Image als Basis-Image
FROM nginx:latest
## Kopieren Sie die Standard-Nginx-Konfigurationsdatei
COPY default.conf /etc/nginx/conf.d/default.conf
## Kopieren Sie den Webanwendungscode in den Container
COPY app/ /usr/share/nginx/html/
## Exponieren Sie Port 80 für HTTP-Verkehr
EXPOSE 80
## Starten Sie den Nginx-Server
CMD ["nginx", "-g", "daemon off;"]
Diese Dockerfile:
- Verwendet das offizielle Nginx-Image als Basis-Image.
- Kopiert die Standard-Nginx-Konfigurationsdatei in den Container.
- Kopiert den Webanwendungscode in das Webroot-Verzeichnis des Containers.
- Exponiert Port 80 für HTTP-Verkehr.
- Startet den Nginx-Server.
Erstellen und Ausführen des Docker-Images
Sobald Sie die Dockerfile haben, können Sie das Docker-Image mit dem Befehl docker build
erstellen:
## Erstellen Sie das Docker-Image
docker build -t my-nginx-server .
Dieser Befehl erstellt das Docker-Image mit dem Tag my-nginx-server
mithilfe der Dockerfile im aktuellen Verzeichnis.
Nachdem das Image erstellt wurde, können Sie einen Container basierend auf dem Image mit dem Befehl docker run
ausführen:
## Führen Sie den Docker-Container aus
docker run -d -p 80:80 --name my-nginx-server my-nginx-server
Dieser Befehl:
- Führt den Container im detachierten Modus (
-d
) aus.
- Mapt Port 80 auf dem Host auf Port 80 im Container (
-p 80:80
).
- Weist dem Container den Namen
my-nginx-server
zu.
- Verwendet das
my-nginx-server
-Image, um den Container zu erstellen.
Skalierung und Lastverteilung
Um Ihren Webserver zu skalieren, können Sie mehrere Instanzen des Docker-Containers ausführen und einen Load Balancer verwenden, um den Datenverkehr auf die Instanzen zu verteilen. Hier ist ein Beispiel dafür, wie Sie dies mit Docker Compose tun können:
version: "3"
services:
web:
build: .
ports:
- 80:80
deploy:
replicas: 3
load-balancer:
image: nginx:latest
ports:
- 8080:80
depends_on:
- web
configs:
- source: nginx-config
target: /etc/nginx/conf.d/default.conf
configs:
nginx-config:
file: ./nginx.conf
Diese Docker Compose-Datei:
- Erstellt den Dienst
web
mithilfe der Dockerfile im aktuellen Verzeichnis.
- Bereitstellt drei Replikate des Dienstes
web
.
- Führt einen Nginx-Loadbalancer-Dienst aus, der auf Port 8080 lauscht und den Datenverkehr an die Instanzen des Dienstes
web
weiterleitet.
- Mountt eine benutzerdefinierte Nginx-Konfigurationsdatei in den Loadbalancer-Container.
Durch die Verwendung von Docker Compose und Lastverteilung können Sie Ihren Webserver einfach skalieren und hohe Verfügbarkeit und Fehlertoleranz gewährleisten.