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

  1. Docker CE auf Ubuntu 18.04 LTS installieren
  2. Docker für Nicht-Root-Benutzer einrichten
  3. Docker Compose installieren
  4. 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
  5. Ghost mit MySQL und Traefik bereitstellen
  6. 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 -y

Nach Abschluss der Installation starten Sie den Docker-Dienst und aktivieren ihn, damit er bei jedem Systemstart gestartet wird.

systemctl start docker  
systemctl enable docker

Die neueste Docker-CE-Version wurde auf dem Ubuntu 18.04-System installiert.

Docker CE installieren

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 hakase

Weisen Sie nun den Benutzer ‘hakase’ den Gruppen ‘sudo’ und ‘docker’ zu.

usermod -a -G root hakase  
usermod -a -G docker hakase

Und starten Sie den Docker-Dienst neu.

systemctl restart docker

Der Benutzer ‘hakase’ kann jetzt den Docker-Container ausführen und den Sudo-Befehl für Root-Rechte ausführen.

Docker für Nicht-Root-Benutzer einrichten

Melden Sie sich als Benutzer ‘hakase’ an und führen Sie den Docker-hello-world-Container aus.

su - hakase  
docker run -it hello-world

Und folgendes ist das Ergebnis.

Testen von Docker als Nicht-Root-Benutzer

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-compose

Und machen Sie die Datei ‘docker-compose’ ausführbar, indem Sie die Dateiberechtigung ändern.

sudo chmod +x /usr/local/bin/docker-compose

Docker Compose wurde installiert - überprüfen Sie es mit dem folgenden Befehl.

docker-compose version  
docker version

Docker Compose installieren

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 ls

Erstellen 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

Erstellen eines benutzerdefinierten Netzwerks

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 - hakase

Erstellen 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.yml

Erstellen 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.yml

Fü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: mysql

Speichern 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.toml

Fü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.json

Als 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.yml

Fü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: always

Speichern 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.yml

Fü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: false

Speichern und beenden.

Erstellen und Konfigurieren des Ghost-Dienstes

Und jetzt haben wir alle Verzeichnisse und Konfigurationen wie unten gezeigt.

tree

Konfigurationsdateien

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

Ghost mit MySQL und Traefik bereitstellen

Wenn es abgeschlossen ist, überprüfen Sie alle laufenden Dienste.

docker-compose ps

Und 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

Überprüfen des Containerprotokolls

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.

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.

Ghost-Blog läuft auf Docker

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.

Ghost-Installer

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

Admin-Login erstellen

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

Benutzer einladen

Jetzt erhalten Sie das Ghost-Dashboard.

Ghost-Dashboard

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

Ghost-Blog läuft im Docker-Container

Die Installation des Ghost-Blogs mit MySQL-Datenbank und Traefik-Reverse-Proxy in der Docker-Umgebung wurde erfolgreich abgeschlossen.

Referenzen

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.