GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Docker-Leitfaden:Bereitstellen von Ghost Blog mit MySQL und Traefik mit Docker

Ghost ist eine leistungsstarke Open-Source-Publishing- und Blog-Plattform, die auf nodejs basiert. 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 Microservices einfach, integriert in vorhandene Infrastrukturkomponenten wie Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul usw.

In diesem Tutorial zeigen wir 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 und Traefik als Reverse Proxy verwenden.

Voraussetzungen

  • Ubuntu 18.04 LTS
  • Root-Rechte

Was wir tun werden

  1. Installieren Sie Docker CE auf Ubuntu 18.04 LTS
  2. Docker für Nicht-Root-Benutzer einrichten
  3. Installieren Sie Docker Compose
  4. Ghost Stack konfigurieren
    • Erstellen Sie ein benutzerdefiniertes Netzwerk
    • Erstellen Sie ein Projektverzeichnis
    • 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 in diesem Tutorial 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.

Installieren Sie nun Docker mit dem folgenden apt-Befehl.

sudo apt install docker-ce -y

Nachdem die Installation abgeschlossen ist, starten Sie den Docker-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.

systemctl start docker
systemctl enable docker

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

Schritt 2 – Richten Sie Docker für Nicht-Root-Benutzer ein

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

Der '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-Container „hello-world“ aus.

su - hakase
docker run -it hello-world

Und folgendes ist das Ergebnis.

Schritt 3 – Docker Compose installieren

In diesem Tutorial installieren wir Docker Compose 1.21 aus einer Binärdatei im Github-Repository.

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 1.21 mit Docker-ce 1.18 wurde installiert.

Schritt 4 – Ghost Stack konfigurieren

In diesem Schritt konfigurieren wir den Docker und erstellen eine neue Docker-Compose-Datei 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, einschließlich MySQL-Datenbank, Traefik-Reverse-Proxy und Ghost-Blog selbst.

Erstellen Sie ein benutzerdefiniertes Netzwerk

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 auf dem Docker-System.

docker network ls

Das benutzerdefinierte Netzwerk für Treafik mit dem Namen „traefiknet“ wurde erstellt.

Erstellen Sie ein Projektverzeichnis

Nach dem Erstellen des benutzerdefinierten Docker-Netzwerks erstellen wir ein neues Projektverzeichnis mit dem Namen „ghost“ und erstellen eine neue docker-compose.yml-Datei.

Melden Sie sich beim Benutzer „hakase“ an.

su - hakase

Erstellen Sie ein neues „Geister“-Verzeichnis und ändern Sie das Arbeitsverzeichnis dorthin.

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 möchten, und wir möchten den MySQL-Container mit den folgenden Konfigurationen erstellen.

  • Wir werden das Docker-Image von MySQL 5.7 verwenden.
  • Mounten Sie das MySQL-Datenverzeichnis im lokalen Docker-Host-Verzeichnis.
  • Ausführen des MySQL-Dienstes im lokalen internen Netzwerk.
  • MySQL-Benutzer und Passwort konfigurieren.
    • MySQL-Root-Passwort:mypassword
    • Datenbank für den Geist namens 'ghostdb' mit Benutzer 'ghost' und Passwort ist 'ghostdbpass'
  • Der MySQL-Container erhält den Namen „mysql“.

Erstellen Sie im Verzeichnis „ghost“ ein neues Verzeichnis mit dem Namen „data“ und bearbeiten Sie die Datei „docker-compose.yml“.

mkdir -p data/
vim docker-compose.yml

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

Traefik-Reverse-Proxy erstellen und konfigurieren

Nach dem Erstellen des MySQL-Dienstes erstellen und konfigurieren wir den Traefik-Reverse-Proxy-Container.

Bevor wir das Skript „docker-compose.yml“ bearbeiten, müssen wir eine neue Traefik-Konfiguration mit dem Namen „traefik.toml“ erstellen.

vim traefik.toml

Traefik-Regelkonfiguration unten einfügen.

#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 = "[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. Es wird verwendet, um alle Letsencrypt-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 bearbeiten wir das Skript „docker-compose.yml“ und fügen die Konfiguration des Traefik-Dienstes hinzu.

  • Wir werden das neueste Traefik-Docker-Image verwenden.
  • Der Container erhält den Namen „traefik“
  • Es wird das benutzerdefinierte Netzwerk „traefiknet“ verwendet und stellt die HTTP- und HTTPS-Ports bereit.
  • 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.

Ghost-Service erstellen und konfigurieren

Nach der Konfiguration des Traefik-Reverse-Proxys erstellen wir die Hauptkonfiguration des Ghost-Dienstes.

Konfigurationsdetails, die wir erstellen möchten.

  • Wir werden Ghost v1 und die kleine alpine Docker-Version verwenden.
  • Wir werden das Ghost-Content-Verzeichnis in das lokale Verzeichnis mit dem Namen „Blog“ einhängen.
  • Der Geisterdienst wird auf dem Standardport mit dem Domänennamen „gho.hakase-labs.io“ ausgeführt, die Konfiguration erfolgt über Docker-Labels.
  • Der Geisterdienst wird zwei Docker-Netzwerke verwenden, intern und traefiknet.
  • Wir konfigurieren die MySQL-Datenbankdetails aus der MySQL-Containerkonfiguration.
  • 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 Konfiguration unten 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.

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

tree

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

Überprüfen Sie nach Abschluss alle laufenden Dienste.

docker-compose ps

Und das Folgende 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 in Betrieb.

Schritt 6 – Testen

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

Melden Sie sich mit Benutzer und Passwort in der Datei „traefik.toml“ an.

Und es folgt das Traefik-Dashboard.

Geben Sie für die Ghost-Installation die Ghost-URL in die Adressleiste ein, meine ist http://gho.hakase-labs.io/

Und Sie erhalten die Ghost-Homepage.

Besuchen Sie nun die Admin-Seite, um einen neuen Admin-Benutzer einzurichten und zu konfigurieren. Meine URL lautet: http://gho.hakase-labs.io/admin/

Klicken Sie auf die grüne Schaltfläche, um einen neuen Administratorbenutzer zu erstellen.

Geben Sie den detaillierten Benutzer, das Passwort und 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 mache das später...".

Jetzt erhalten Sie das Ghost Dashboard.

Und nach dem Erstellen des Beispielbeitrags ist das folgende Ergebnis.

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

Referenzen

  • https://hub.docker.com/_/ghost/
  • https://docs.traefik.io/

Docker
  1. So installieren Sie die Ghost Blog-Software mit Apache und SSL unter Ubuntu 16.04

  2. PostgreSQL in Docker ausführen, eine schnelle und praktische Anleitung

  3. So installieren Sie WordPress mit Docker, eine leicht verständliche Anleitung

  4. So führen Sie MySQL im Docker-Container aus:Eine einfache, leicht verständliche Anleitung

  5. So installieren und hosten Sie einen OpenVPN-Server mit Docker

Virtuelles Hosting mit vsftpd und MySQL auf Ubuntu 12.10

So installieren Sie die Ghost Blog-Software mit Apache und SSL unter Ubuntu 15.10

So richten Sie MySQL mit Docker unter Linux ein

Bereitstellen eines EFK-Stacks mit Docker

Vollständiger Leitfaden für selbsthostendes Ghost-CMS mit Docker

So stellen Sie eine PHP-Anwendung mit Nginx und MySQL mit Docker und Docker Compose bereit