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
- Docker CE auf Ubuntu installieren 18.04 LTS
- Einrichtungsdocker für Nicht-Root-Benutzer
- Docker Compose installieren
- 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
- Bereitstellen von Ghost mit MySQL und Traefik
- 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.
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.
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.
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 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
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.
Und jetzt haben wir das gesamte Verzeichnis und die Konfiguration 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
Wenn es fertig ist, überprüfen Sie alle laufenden Dienste.
docker-compose ps
Und das Ergebnis ist folgendes.
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 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.
Und hier 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 du bekommst die Geister-Homepage.
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.
Geben Sie Detail Benutzer, Passwort, E-Mail 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 nach der Erstellung des Sample-Posts ergibt sich folgendes Ergebnis.
Die Ghost-Blog-Installation mit MySQL-Datenbank und Traefik Reverse Proxy auf der Docker-Umgebung wurde erfolgreich abgeschlossen.