Docker Compose hilft dir dabei, komplexe Anwendungen mit mehreren Containern im Griff zu behalten. Dieser Artikel erklärt dir die docker-compose.yaml Datei, die sozusagen der Bauplan für deine Anwendung ist. Anschließend nutzen wir dieses Wissen, um eine spezielle docker-compose.yml Datei für eine WordPress-Installation zu erstellen.
Teil 1: docker-compose.yaml entschlüsselt
Docker Compose ermöglicht es dir, Anwendungen aus mehreren Containern einfach zu steuern. Du musst dich nicht mehr mit einzelnen Containern rumschlagen, sondern kannst dich ganz entspannt auf die Entwicklung und Einrichtung deiner Anwendung konzentrieren.
Die Zauberkraft von docker-compose.yaml
Die docker-compose.yaml Datei ist das Herzstück deiner Docker Compose Anwendung. Sie enthält alle Informationen, die deine Anwendung zum Laufen benötigt:
- Dienste (Container): Legt fest, aus welchen einzelnen Containern deine Anwendung besteht.
- Konfigurationen: Setzt bestimmte Parameter für jeden Container, zum Beispiel Ports, Umgebungsvariablen und Ressourceneinsatz.
- Volumes: Stellt sicher, dass Daten auch nach einem Neustart des Containers nicht verloren gehen.
- Netzwerke (optional): Erstellt eigene Netzwerke, damit deine Container innerhalb der Anwendung miteinander sprechen können.
Aufbau und Schreibweise
Die docker-compose.yml Datei ist in YAML geschrieben, einer leicht verständlichen Sprache für Daten. Sie verwendet Schlüsselwörter mit Werten und Einrückungen, um verschiedene Bereiche zu definieren. So sieht der grundsätzliche Aufbau aus:
version: "X.Y" # Legt die Version der docker-compose.yml Datei fest
services:
# Definiere hier einzelne Dienste (Container)
dienstname:
image: image_name:tag # Legt das Docker-Image fest
ports: # Verbindet Container-Ports mit Ports deines Computers
- "container_port:host_port"
volumes: # Speichert Daten dauerhaft zwischen Neustarts (optional)
- "host_pfad:container_pfad"
environment: # Setzt Umgebungsvariablen für den Container (optional)
VAR_NAME: wert
volumes: # Definiert Volumes für dauerhafte Daten (optional)
volume_name: {}
networks: # Definiert eigene Netzwerke für die Container-Kommunikation (optional)
netzwerk_name: {}
Teil 2: WordPress mit Docker Compose einrichten
Voraussetzungen
Damit du alles nachvollziehen kannst, brauchst du Docker auf deinem Computer. Ein bisschen Grundwissen zu YAML Syntax ist hilfreich, aber nicht zwingend erforderlich.
Schritt-für-Schritt-Anleitung
docker-compose.yml erstellen:
- Öffne dein Terminal und navigiere in den Verzeichnis deines Projekts.
- Erstelle eine neue Datei namens docker-compose.yml mit deinem Lieblings-Texteditor.
Version angeben:
Füge folgende Zeile ganz an den Anfang der Datei ein, um die verwendete Version der docker-compose.yml Datei festzulegen. Eine gängige Version ist „3.8“:
version: "3.8"
Dienste definieren:
Im Abschnitt services werden die einzelnen Container für deine WordPress-Anwendung festgelegt. In unserem Beispiel definieren wir zwei Dienste: wordpress für die eigentliche WordPress-Anwendung und db für die MySQL-Datenbank.
services:
wordpress:
# ... (Konfiguration für den WordPress-Dienst)
db:
# ... (Konfiguration für die MySQL-Datenbank)
WordPress-Dienst einrichten:
Unter dem Abschnitt services konfigurieren wir den wordpress Dienst:
services:
wordpress:
image: wordpress:latest # Verwendet das offizielle WordPress-Image
ports:
- "80:80" # Verbindet Container-Port 80 (WordPress) mit Port 80 deines Computers
volumes:
- ./wp-content:/var/www/html/wp-content # Speichert wp-content Verzeichnis dauerhaft
Diese Konfiguration verwendet das Image wordpress:latest, welches das offizielle WordPress-Image von Docker Hub herunterlädt. Der Abschnitt ports verbindet Container-Port 80 (Standardport von WordPress) mit Port 80 deines Computers. So kannst du später unter http://localhost:80 auf deine WordPress-Seite zugreifen. Der Abschnitt volumes definiert ein Volume, welches das Verzeichnis wp-content speichert, in dem Uploads, Themes und Plugins liegen. So gehen diese Daten auch nach einem Neustart des Containers nicht verloren.
Datenbank-Dienst einrichten:
Als nächstes richten wir den db Dienst für die MySQL-Datenbank ein:
services:
# ... (Konfiguration für den WordPress-Dienst)
db:
image: mysql:8.0 # Verwendet das offizielle MySQL-Image
environment:
MYSQL_ROOT_PASSWORD: shamsher123 # Setzt das MySQL root-Passwort (Achtung: Sicherheitsrisiko)
volumes:
- mysql-data:/var/lib/mysql # Speichert Datenbankdaten dauerhaft (optional)
Diese Konfiguration nutzt das Image mysql:8.0, um einen MySQL-Container zu erstellen. Der Abschnitt environment legt die Umgebungsvariable MYSQL_ROOT_PASSWORD mit dem Beispiel-Passwort shamsher123 fest. Wichtig: Ersetze dieses unbedingt durch ein sicheres Passwort! Der Abschnitt volumes (optional) definiert ein Volume namens mysql-data,welches das Verzeichnis mit den Datenbankdaten (/var/lib/mysql) speichert. So gehen diese Daten auch nach einem Neustart des Containers nicht verloren.
WordPress Anwendung starten
Mit deiner fertigen docker-compose.yml Datei kannst du nun deine WordPress-Anwendung starten. Öffne dafür dein Terminal und führe folgenden Befehl aus:
docker-compose up -d
Der Befehl docker-compose up weist Docker Compose an, die in der docker-compose.yml definierten Dienste zu erstellen und zu starten. Die Option -d sorgt dafür, dass die Container im Hintergrund laufen und dein Terminal nicht blockiert wird.
Sobald der Befehl abgeschlossen ist, laufen deine WordPress-Anwendung und die Datenbank in separaten Containern. Du kannst auf dein WordPress-Adminpanel unter http://localhost:80/wp-admin zugreifen. Nutze dafür das Passwort, welches du für die Umgebungsvariable MYSQL_ROOT_PASSWORD festgelegt hast.
Teil 3: Fazit und Nächste Schritte
Dieser Artikel hat dir eine grundlegende Einführung in docker-compose.yml und ihre Rolle beim Verwalten einer WordPress-Anwendung mit Docker Compose gegeben. Du hast gelernt, wie man:
- Dienste (Container) für die Anwendung definiert
- Ports, Volumes und Umgebungsvariablen konfiguriert
- Daten zwischen Neustarts sichert
Anpassungen und Nächste Schritte
Die docker-compose.yml Datei bietet viele Möglichkeiten zur Anpassung. Hier einige Beispiele:
- Permanenter Speicher: Konfiguriere zusätzliche Volumes, um Themes, Plugins oder eigene Konfigurationen dauerhaft zu speichern.
- Eigene Themes/Plugins: Verknüpfe deinen lokalen Entwicklungsordner mit Themes und Plugins mit dem Container, um die Entwicklung zu vereinfachen.
- Umgebungsvariablen: Definiere zusätzliche Umgebungsvariablen für die WordPress-Konfiguration.
Für eine tiefere Beschäftigung empfehlen wir die offizielle Docker-Dokumentation zu docker-compose.yml (https://docs.docker.com/compose/compose-file/legacy-versions/) und WordPress Docker-Setups (https://www.youtube.com/watch?v=lDgK1WL3hJI).
Dieser Artikel hat dir das Fundament gegeben, um WordPress-Anwendungen mit Docker Compose zu erstellen und zu verwalten. Experimentiere ruhig und passe deine docker-compose.yaml Datei an deine Bedürfnisse an.
Vollständiger Artikel auf Englisch:
Du findest den kompletten Artikel auf Englisch unter folgendem Link: Docker Tutorial by Shamsher Haider