Docker-Anleitung: Einsatz von Ghost Blog mit MySQL und Traefik mit Docker

Ghost ist eine leistungsstarke Open-Source-Publishing- und Blog-Plattform auf Basis von nodejs. Es ist gut gestaltet und einfach zu bedienen. Die Ghost-Plattform ist in JavaScript geschrieben und verwendet node.js als Laufzeitumgebung. Die erste Ghost-Version, die 2013 unter der MIT-Lizenz veröffentlicht wurde….

Traefik ist ein moderner HTTP Reverse Proxy und Load Balancer für Microservices. Traefik macht die Bereitstellung aller Mikroservices einfach und integriert in bestehende Infrastrukturkomponenten wie Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul etc.

In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie Ghost als Docker-Container installieren und konfigurieren. Wir werden Ghost unter der neuesten Docker CE-Version installieren und konfigurieren, MySQL als Datenbank verwenden und Traefik als Reverse Proxy verwenden.

Voraussetzungen

  • Ubuntu 18.04 LTS
  • Root-Rechte

Was wir tun werden

  1. Docker CE auf Ubuntu installieren 18.04 LTS
  2. Einrichtungsdocker für Nicht-Root-Benutzer
  3. Docker Compose installieren
  4. Geisterstapel konfigurieren
    • Erstellen eines benutzerdefinierten Netzwerks
    • Erstellen eines Projektverzeichnisses
    • MySQL Container erstellen und konfigurieren
    • Erstellen und Konfigurieren von Traefik Reverse Proxy
    • Erstellen und Konfigurieren von Ghost Containern
  5. Bereitstellen von Ghost mit MySQL und Traefik
  6. Prüfung

Schritt 1 – Docker CE auf Ubuntu 18.04 LTS installieren

Der erste Schritt, den wir in diesem Tutorial machen 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 Dockerschlü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.

Installieren Sie nun den Docker mit dem Befehl apt unten.

sudo apt install docker-ce -y

Nachdem die Installation abgeschlossen ist, starten Sie den Docker-Dienst und aktivieren Sie ihn bei jedem Systemstart.

systemctl start docker
systemctl enable docker

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

Installation von Docker CE

Schritt 2 – Einrichten des Dockers für Nicht-Root-Benutzer

In diesem Leitfaden werden alle Container-Microservices unter dem normalen/nicht routinemäßigen Benutzer ausgeführt. Daher müssen wir den Benutzer konfigurieren, um den Docker-Container und den sudo-Befehl für root-Rechte ausführen zu können.

Erstellen Sie einen neuen Benutzer namens’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

Die’hakase‘ kann nun den Docker-Container und den sudo-Befehl für root-Rechte ausführen.

Einrichtungsdocker für Nicht-Root-Benutzer

Melden Sie sich als Benutzer’hakase‘ an und starten Sie den Docker hello-world container.

su - hakase
docker run -it hello-world

Und folgendes ist das Ergebnis.

Test-Docker als Nicht-Root-Benutzer

Schritt 3 – Docker Compose installieren

In diesem Tutorial werden wir den 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

Der Docker Composite wurde installiert – überprüfen Sie ihn 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 – Geisterstapel konfigurieren

In diesem Schritt konfigurieren wir das Docker und erstellen eine neue Docker-Kompositionsdatei für die Ghost-Installation.

Wir werden ein neues benutzerdefiniertes Docker-Netzwerk erstellen und eine neue docker-compose yml-Datei erstellen, die drei Hauptdienste enthält, darunter MySQL-Datenbank, Traefik Reverse Proxy und Ghost Blog selbst.

Erstellen eines benutzerdefinierten Netzwerks

Zeigen Sie das verfügbare Docker-Netzwerk mit dem Befehl docker network unten an.

docker network ls

Erstellen Sie ein neues benutzerdefiniertes Docker-Netzwerk für den Traefik Reverse Proxy namens’traefiknet‘.

docker network create traefiknet

Überprüfen Sie nun noch einmal das verfügbare Netzwerk auf dem Dockersystem.

docker network ls

Erstellen eines benutzerdefinierten Netzwerks

Das benutzerdefinierte Netzwerk für Treafik namens’traefiknet‘ wurde erstellt.

Erstellen eines Projektverzeichnisses

Nachdem wir das benutzerdefinierte Docker-Netzwerk erstellt haben, werden wir ein neues Projektverzeichnis namens’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 ändern Sie das Arbeitsverzeichnis darauf.

mkdir ghost/
cd ghost/

Und erstellen Sie eine neue Docker-Compose-Datei.

touch docker-compose.yml

MySQL-Dienst erstellen und konfigurieren

MySQL ist der erste Dienst, den wir erstellen wollen, und wir wollen den MySQL-Container mit den folgenden Konfigurationen erstellen.

  • Wir werden das MySQL 5.7 Docker-Image verwenden.
  • Mounten Sie das MySQL-Datenverzeichnis in das lokale Docker-Hostverzeichnis.
  • Ausführen des MySQL-Dienstes im lokalen internen Netzwerk.
  • MySQL-Benutzer und Passwort konfigurieren.
    • MySQL Root-Passwort: mypassword
    • Datenbank für den Ghost namens’ghostdb‘ mit Benutzer’ghost‘ und Passwort ist’ghostdbpass‘.
  • Der MySQL-Container wird als’mysql‘ bezeichnet.

Erstellen Sie im Verzeichnis’ghost‘ ein neues Verzeichnis namens’data‘ und bearbeiten Sie die Datei’docker-compose.yml‘.

mkdir -p data/
vim docker-compose.yml

Fügen Sie die untenstehende 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 von Traefik Reverse Proxy

Nach der Erstellung des MySQL-Dienstes werden wir den traefik reverse proxy container erstellen und konfigurieren.

Bevor wir das Skript ‚docker-compose.yml‘ bearbeiten können, müssen wir eine neue Traefik-Konfiguration namens’traefik.toml‘ erstellen.

vim traefik.toml

Füge die Konfiguration der Traefik-Regeln unten ein.

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#hakase and password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
    users = [
        "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
    ]

[api]
entrypoint="dash"
dashboard = true

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "hakase@gmail.com"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

Speichern und beenden.

Nun müssen wir eine neue Datei für die SSL-Letsencrypt-Konfiguration’acme.json‘ erstellen. Es wird verwendet, um alle letsencrypt zu speichern, die ein Protokoll generieren.

Erstellen Sie die leere Datei’acme.json‘ und ändern Sie die Berechtigung auf 600.

touch acme.json
chmod 600 acme.json

Als nächstes bearbeiten wir das Skript’docker-compose.yml‘ und fügen die Traefik-Dienstkonfiguration hinzu.

  • Wir werden das neueste Traefik Docker Bild verwenden.
  • Der Container wird als’traefik‘ bezeichnet.
  • Es wird das benutzerdefinierte Netzwerk’traefiknet‘ verwendet und stellt die HTTP- und HTTPS-Ports zur Verfügung.
  • Mounten Sie die Docker-Socken-Datei und die Traefik-Konfiguration’traefik.toml‘ und’acme.json‘.
  • Wir haben die URL des Traefik Dashboards definiert und das Backend durch die Docker-Labels geführt.

Bearbeiten Sie die Datei’docker-compose.yml‘.

vim docker-compose.yml

Fügen Sie die untenstehende Traefik-Service-Konfiguration 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.

Ghost Service erstellen und konfigurieren

Nachdem wir den traefik Reverse Proxy konfiguriert haben, werden wir die Hauptkonfiguration des Ghostdienstes erstellen.

Konfigurationsdetails, die wir erstellen möchten.

  • Wir werden den Ghost v1 und die kleine Docker Alpine Version verwenden.
  • Wir werden das Ghost-Content-Verzeichnis in das lokale Verzeichnis namens „blog“ einbinden.
  • Der Ghost-Service wird auf dem Standard-Port mit dem Domainnamen’gho.hakase-labs.io‘ ausgeführt, die Konfiguration über Docker-Labels.
  • Der Ghost Service wird zwei Dockernetzwerke nutzen, intern und traefiknet.
  • Wir konfigurieren die MySQL-Datenbankdetails aus der mysql-Container-Konfiguration.
  • Und der Ghost wird gestartet, wenn der Traefik- und MySQL-Container läuft.

Erstellen Sie ein neues Verzeichnis mit dem Namen ‚blog‘ und bearbeiten Sie die Datei ‚docker-compose.yml‘.

mkdir -p blog/
vim docker-compose.yml

Fügen Sie die untenstehende 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.

Ghost Service erstellen und konfigurieren

Und jetzt haben wir das gesamte Verzeichnis und die Konfiguration wie unten gezeigt.

tree

Konfigurationsdateien

Schritt 5 – Bereitstellen von Ghost mit MySQL und Traefik

Um unseren gesamten Ghost-Stack-Dienst zu erstellen und auszuführen, können wir den folgenden Befehl verwenden.

docker-compose up -d

Bereitstellen von Ghost mit MySQL und Traefik

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

docker-compose ps

Und das Ergebnis ist folgendes.

docker-compose ps

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

das Containerprotokoll überprüfen

Der Ghost-Stack mit MySQL und dem Traefik Reverse-Proxy ist funktionsfähig.

Schritt 6 – Prüfung

Öffnen Sie das Traefik-Dashboard mit seiner URL, meine isthttp://traef.hakase-labs.io/

Melden Sie sich mit dem Benutzer und dem Passwort in der Datei’traefik.toml‘ an.

Bei Traefik anmelden

Und hier 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 du bekommst die Geister-Homepage.

Ghost Blog läuft auf Docker

Besuchen Sie nun 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-Installateur

Geben Sie Detail Benutzer, Passwort, E-Mail 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 nach der Erstellung des Sample-Posts ergibt sich folgendes Ergebnis.

Geisterglog, der im Docker-Container läuft.

Die Ghost-Blog-Installation mit MySQL-Datenbank und Traefik Reverse Proxy auf der Docker-Umgebung wurde erfolgreich abgeschlossen.

Referenzen

Das könnte dich auch interessieren …