Docker-Anleitung · 8 min read · Feb 04, 2026
Docker-Anleitung: Bereitstellung des Ghost-Blogs mit MySQL und Traefik mit Docker

Ghost ist eine leistungsstarke Open-Source-Publishing- und Blogging-Plattform, die auf Node.js basiert. Sie ist gut gestaltet und einfach zu bedienen. Die Ghost-Plattform ist in JavaScript geschrieben und verwendet Node.js als Laufzeitumgebung. Die erste Ghost-Version wurde 2013 unter der MIT-Lizenz veröffentlicht.
Traefik ist ein moderner HTTP-Reverse-Proxy und Lastenausgleich für Microservices. Traefik erleichtert die Bereitstellung aller Microservices und integriert sich in bestehende Infrastrukturkomponenten wie Docker, Swarm-Modus, Kubernetes, Amazon ECS, Rancher, Etcd, Consul usw.
In diesem Tutorial zeigen wir Schritt für Schritt, wie man Ghost als Docker-Container installiert und konfiguriert. Wir werden Ghost unter der neuesten Docker CE-Version installieren und konfigurieren, MySQL als Datenbank verwenden und Traefik als Reverse Proxy einsetzen.
Voraussetzungen
- Ubuntu 18.04 LTS
- Root-Rechte
Was wir tun werden
- Docker CE auf Ubuntu 18.04 LTS installieren
- Docker für Nicht-Root-Benutzer einrichten
- Docker Compose installieren
- Ghost-Stack konfigurieren - Ein benutzerdefiniertes Netzwerk erstellen
- Ein Projektverzeichnis erstellen
- MySQL-Container erstellen und konfigurieren
- Traefik-Reverse-Proxy erstellen und konfigurieren
- Ghost-Container erstellen und konfigurieren
- Ghost mit MySQL und Traefik bereitstellen
- Testen
Schritt 1 - Docker CE auf Ubuntu 18.04 LTS installieren
Der erste Schritt, den wir in diesem Tutorial unternehmen werden, ist die Installation der neuesten Docker-CE-Version des Systems. Die Docker-CE-Version kann aus dem offiziellen Docker-Repository installiert werden.
Fügen Sie den Docker-Schlüssel und das Docker-CE-Repository hinzu.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"Der Befehl aktualisiert automatisch alle Repositories auf dem System.
Jetzt installieren Sie Docker mit dem folgenden apt-Befehl.
sudo apt install docker-ce -yNach Abschluss der Installation starten Sie den Docker-Dienst und aktivieren ihn, damit er bei jedem Systemstart gestartet wird.
systemctl start docker
systemctl enable dockerDie neueste Docker-CE-Version wurde auf dem Ubuntu 18.04-System installiert.

Schritt 2 - Docker für Nicht-Root-Benutzer einrichten
In diesem Leitfaden werden alle Container-Microservices unter dem normalen/nicht-root-Benutzer ausgeführt. Daher müssen wir den Benutzer so konfigurieren, dass er den Docker-Container ausführen und den Sudo-Befehl für Root-Rechte ausführen kann.
Erstellen Sie einen neuen Benutzer mit dem Namen ‘hakase’ und erstellen Sie das Passwort.
useradd -m -s /bin/bash hakase
passwd hakaseWeisen Sie nun den Benutzer ‘hakase’ den Gruppen ‘sudo’ und ‘docker’ zu.
usermod -a -G root hakase
usermod -a -G docker hakaseUnd starten Sie den Docker-Dienst neu.
systemctl restart dockerDer Benutzer ‘hakase’ kann jetzt den Docker-Container ausführen und den Sudo-Befehl für Root-Rechte ausführen.

Melden Sie sich als Benutzer ‘hakase’ an und führen Sie den Docker-hello-world-Container aus.
su - hakase
docker run -it hello-worldUnd folgendes ist das Ergebnis.

Schritt 3 - Docker Compose installieren
In diesem Tutorial werden wir Docker Compose 1.21 aus einer Binärdatei im Github-Repository installieren.
Laden Sie die Docker-Compose-Binärdatei in das Verzeichnis ‘/usr/local/bin’ herunter.
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-composeUnd machen Sie die Datei ‘docker-compose’ ausführbar, indem Sie die Dateiberechtigung ändern.
sudo chmod +x /usr/local/bin/docker-composeDocker Compose wurde installiert - überprüfen Sie es mit dem folgenden Befehl.
docker-compose version
docker version
Docker-Compose 1.21 mit Docker-CE 1.18 wurde installiert.
Schritt 4 - Ghost-Stack konfigurieren
In diesem Schritt werden wir Docker konfigurieren und eine neue Docker-Compose-Datei für die Ghost-Installation erstellen.
Wir werden ein neues benutzerdefiniertes Docker-Netzwerk erstellen und eine neue Docker-Compose-YML-Datei erstellen, die drei Hauptdienste enthält, einschließlich der MySQL-Datenbank, des Traefik-Reverse-Proxys und des Ghost-Blogs selbst.
Erstellen eines benutzerdefinierten Netzwerks
Zeigen Sie das verfügbare Docker-Netzwerk mit dem folgenden Docker-Netzwerkbefehl an.
docker network lsErstellen Sie ein neues benutzerdefiniertes Docker-Netzwerk für den Traefik-Reverse-Proxy mit dem Namen ‘traefiknet’.
docker network create traefiknetÜberprüfen Sie nun erneut das verfügbare Netzwerk im Docker-System.
docker network ls
Das benutzerdefinierte Netzwerk für Traefik mit dem Namen ‘traefiknet’ wurde erstellt.
Erstellen eines Projektverzeichnisses
Nachdem wir das benutzerdefinierte Docker-Netzwerk erstellt haben, werden wir ein neues Projektverzeichnis mit dem Namen ‘ghost’ erstellen und eine neue docker-compose.yml-Datei erstellen.
Melden Sie sich beim Benutzer ‘hakase’ an.
su - hakaseErstellen Sie ein neues ‘ghost’-Verzeichnis und wechseln Sie in dieses Verzeichnis.
mkdir ghost/
cd ghost/Und erstellen Sie eine neue Docker-Compose-Datei.
touch docker-compose.ymlErstellen und Konfigurieren des MySQL-Dienstes
MySQL ist der erste Dienst, den wir erstellen möchten, und wir möchten den MySQL-Container mit den folgenden Konfigurationen erstellen.
- Wir verwenden das MySQL 5.7 Docker-Image.
- Mounten Sie das MySQL-Datenverzeichnis in das lokale Docker-Hostverzeichnis.
- Führen Sie den MySQL-Dienst im lokalen internen Netzwerk aus.
- Konfigurieren Sie MySQL-Benutzer und Passwort. - MySQL-Root-Passwort: mypassword
- Datenbank für Ghost mit dem Namen ‘ghostdb’ mit Benutzer ‘ghost’ und Passwort ‘ghostdbpass’
- Der MySQL-Container wird als ‘mysql’ benannt.
Erstellen Sie im ‘ghost’-Verzeichnis ein neues Verzeichnis mit dem Namen ‘data’ und bearbeiten Sie die ‘docker-compose.yml’-Datei.
mkdir -p data/
vim docker-compose.ymlFügen Sie die folgende Konfiguration ein.
version: '3.3'
services:
mysql:
image: mysql:5.7
restart: always
volumes:
- ./data:/var/lib/mysql
labels:
- "traefik.enable=false"
networks:
- internal
environment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_USER: ghost
MYSQL_PASSWORD: ghostdbpass
MYSQL_DATABASE: ghostdb
container_name: mysqlSpeichern und beenden.
Erstellen und Konfigurieren des Traefik-Reverse-Proxys
Nachdem wir den MySQL-Dienst erstellt haben, werden wir den Traefik-Reverse-Proxy-Container erstellen und konfigurieren.
Bevor wir das Skript ‘docker-compose.yml’ bearbeiten, müssen wir eine neue Traefik-Konfiguration mit dem Namen ‘traefik.toml’ erstellen.
vim traefik.tomlFügen Sie die Traefik-Regelkonfiguration unten ein.
#Traefik Globale Konfiguration
debug = false
checkNewVersion = true
logLevel = "ERROR"
#Definieren Sie den EntryPoint für HTTP und HTTPS
defaultEntryPoints = ["https","http"]
#Definieren Sie den HTTP-Port 80 und
#HTTPS-Port 443 EntryPoint
#Aktivieren Sie die automatische Umleitung von HTTP zu HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
#Aktivieren Sie das Traefik-Dashboard auf Port 8080
#mit der grundlegenden Authentifizierungsmethode
#hakase und Passwort
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
users = [
"hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
]
[api]
entrypoint="dash"
dashboard = true
#Aktivieren Sie das erneute Senden einer Anfrage, wenn der Netzwerkfehler auftritt
[retry]
#Definieren Sie die Docker-Backend-Konfiguration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false
#Letsencrypt Registrierung
#Definieren Sie die Letsencrypt ACME HTTP-Herausforderung
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[acme.httpChallenge]
entryPoint = "http"Speichern und beenden.
Jetzt müssen wir eine neue Datei für die SSL-Letsencrypt-Konfiguration ‘acme.json’ erstellen. Diese wird verwendet, um alle von Letsencrypt generierten Protokolle zu speichern.
Erstellen Sie die leere Datei ‘acme.json’ und ändern Sie die Berechtigung auf 600.
touch acme.json
chmod 600 acme.jsonAls nächstes werden wir das Skript ‘docker-compose.yml’ bearbeiten und die Traefik-Dienstkonfiguration hinzufügen.
- Wir verwenden das neueste Traefik-Docker-Image.
- Der Container wird als ‘traefik’ benannt.
- Es verwendet das benutzerdefinierte Netzwerk ‘traefiknet’ und exponiert die HTTP- und HTTPS-Ports.
- Mounten Sie die Docker-Sock-Datei und die Traefik-Konfiguration ‘traefik.toml’ und ‘acme.json’.
- Wir haben die Traefik-Dashboard-URL und das Backend über die Docker-Labels definiert.
Bearbeiten Sie die ‘docker-compose.yml’.
vim docker-compose.ymlFügen Sie die Traefik-Dienstkonfiguration unten ein.
traefik:
image: traefik:latest
command: --docker
ports:
- 80:80
- 443:443
labels:
- "traefik.enable=true"
- "traefik.backend=dashboard"
- "traefik.frontend.rule=Host:traef.hakase-labs.io"
- "traefik.port=8080"
networks:
- traefiknet
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
container_name: traefik
restart: alwaysSpeichern und beenden.
Erstellen und Konfigurieren des Ghost-Dienstes
Nachdem wir den Traefik-Reverse-Proxy konfiguriert haben, erstellen wir die Hauptkonfiguration für den Ghost-Dienst.
Konfigurationsdetails, die wir erstellen möchten.
- Wir verwenden die Ghost v1 und die kleine Docker-Alpine-Version.
- Wir mounten das Ghost-Inhaltsverzeichnis in das lokale Verzeichnis mit dem Namen ‘blog’.
- Der Ghost-Dienst wird auf dem Standardport mit dem Domainnamen ‘gho.hakase-labs.io’ ausgeführt, die Konfiguration erfolgt über Docker-Labels.
- Der Ghost-Dienst verwendet zwei Docker-Netzwerke, intern und traefiknet.
- Wir konfigurieren die MySQL-Datenbankdetails aus der MySQL-Containerkonfiguration.
- Und der Ghost wird gestartet, wenn der Traefik- und MySQL-Container aktiv ist.
Erstellen Sie ein neues Verzeichnis mit dem Namen ‘blog’ und bearbeiten Sie die ‘docker-compose.yml’-Datei.
mkdir -p blog/
vim docker-compose.ymlFügen Sie die folgende Konfiguration ein.
ghost:
image: ghost:1-alpine
restart: always
ports:
- 2368
volumes:
- ./blog:/var/lib/ghost/content
labels:
- "traefik.enabled=true"
- "traefik.backend=ghost"
- "traefik.frontend.rule=Host:gho.hakase-labs.io"
- "traefik.docker.network=traefiknet"
- "traefik.port=2368"
networks:
- internal
- traefiknet
environment:
database__client: mysql
database__connection__host: mysql
database__connection__user: ghost
database__connection__password: ghostdbpass
database__connection__database: ghostdb
container_name: ghost
depends_on:
- mysql
- traefik
networks:
traefiknet:
external: true
internal:
external: falseSpeichern und beenden.

Und jetzt haben wir alle Verzeichnisse und Konfigurationen wie unten gezeigt.
tree
Schritt 5 - Ghost mit MySQL und Traefik bereitstellen
Um alle unsere Ghost-Stack-Dienste zu erstellen und auszuführen, können wir den folgenden Befehl verwenden.
docker-compose up -d
Wenn es abgeschlossen ist, überprüfen Sie alle laufenden Dienste.
docker-compose psUnd folgendes ist das Ergebnis.
Wenn Sie einen Fehler haben, überprüfen Sie das Containerprotokoll mit den folgenden Befehlen.
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost
Der Ghost-Stack mit MySQL und dem Traefik-Reverse-Proxy ist aktiv und läuft.
Schritt 6 - Testen
Öffnen Sie das Traefik-Dashboard mit seiner URL, meine ist http://traef.hakase-labs.io/
Melden Sie sich mit dem Benutzer und Passwort in der Datei ‘traefik.toml’ an.
Und folgendes ist das Traefik-Dashboard.

Für die Ghost-Installation geben Sie die Ghost-URL in die Adressleiste ein, meine ist http://gho.hakase-labs.io/
Und Sie erhalten die Startseite von Ghost.

Besuchen Sie jetzt die Admin-Seite, um einen neuen Admin-Benutzer einzurichten und zu konfigurieren. Meine URL ist: http://gho.hakase-labs.io/admin/
Klicken Sie auf die grüne Schaltfläche, um einen neuen Admin-Benutzer zu erstellen.

Geben Sie die Benutzerdetails, das Passwort, die E-Mail-Adresse ein und klicken Sie erneut auf die grüne Schaltfläche.

Um ein neues Mitglied oder einen neuen Benutzer einzuladen, klicken Sie auf den Link ‘Ich werde das später tun..’.

Jetzt erhalten Sie das Ghost-Dashboard.

Und nachdem Sie den Beispielbeitrag erstellt haben, ist folgendes das Ergebnis.

Die Installation des Ghost-Blogs mit MySQL-Datenbank und Traefik-Reverse-Proxy in der Docker-Umgebung wurde erfolgreich abgeschlossen.
Referenzen
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.