Ghost je výkonná open source publikační a blogovací platforma založená na nodejs. Je dobře navržen a snadno se používá. Platforma duchů je napsána v JavaScriptu a jako běhové prostředí používá node.js. První verze Ghost vydaná v roce 2013 pod licencí MIT..
Traefik je moderní HTTP reverzní proxy a load balancer pro mikroslužby. Díky Traefik je nasazení všech mikroslužeb snadné, integrované se stávajícími komponentami infrastruktury, jako je Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul atd.
V tomto tutoriálu si krok za krokem ukážeme, jak nainstalovat a nakonfigurovat Ghost jako kontejner Docker. Nainstalujeme a nakonfigurujeme Ghost pod nejnovější verzí Docker CE, použijeme MySQL jako databázi a použijeme Traefik jako reverzní proxy.
Předpoklady
- Ubuntu 18.04 LTS
- Oprávnění uživatele root
Co uděláme
- Nainstalujte Docker CE na Ubuntu 18.04 LTS
- Nastavit Docker pro uživatele bez oprávnění root
- Nainstalujte Docker Compose
- Konfigurace Ghost Stack
- Vytvořte vlastní síť
- Vytvořte adresář projektu
- Vytvoření a konfigurace kontejneru MySQL
- Vytvořte a nakonfigurujte Traefik Reverse Proxy
- Vytvořte a nakonfigurujte Ghost Container
- Nasaďte Ghost s MySQL a Traefik
- Testování
Krok 1 – Instalace Docker CE na Ubuntu 18.04 LTS
Prvním krokem, který v tomto tutoriálu provedeme, je instalace nejnovější verze systému docker-ce. Verzi docker-ce lze nainstalovat z oficiálního úložiště dockerů.
Přidejte klíč docker a úložiště docker-ce.
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"
Příkaz automaticky aktualizuje všechna úložiště v systému.
Nyní nainstalujte docker pomocí příkazu apt níže.
sudo apt install docker-ce -y
Po dokončení instalace spusťte službu docker a povolte její spuštění při každém spuštění systému.
systemctl start docker
systemctl enable docker
Nejnovější verze docker-ce byla nainstalována v systému Ubuntu 18.04.

Krok 2 – Nastavení dockeru pro uživatele bez oprávnění root
V této příručce budou všechny kontejnerové mikroslužby spuštěny pod normálním uživatelem/uživatelem bez oprávnění root. Musíme tedy nakonfigurovat uživatele, aby mohl spouštět kontejner Docker a spouštět příkaz sudo pro oprávnění root.
Vytvořte nového uživatele s názvem 'hakase' a vytvořte heslo.
useradd -m -s /bin/bash hakase
passwd hakase
Nyní přiřaďte uživatele 'hakase' do skupin 'sudo' a 'docker'.
usermod -a -G root hakase
usermod -a -G docker hakase
A restartujte službu docker.
systemctl restart docker
'hakase' nyní může spustit kontejner docker a spustit příkaz sudo pro oprávnění root.

Přihlaste se jako uživatel 'hakase' a spusťte kontejner hello-world docker.
su - hakase
docker run -it hello-world
A následuje výsledek.

Krok 3 – Instalace Docker Compose
V tomto tutoriálu nainstalujeme docker compose 1.21 z binárního souboru v úložišti Github.
Stáhněte si binární soubor docker-compose do adresáře '/usr/local/bin'.
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
A udělejte soubor 'docker-compose' spustitelný změnou oprávnění k souboru.
sudo chmod +x /usr/local/bin/docker-compose
Docker compose byl nainstalován – zkontrolujte jej pomocí příkazu níže.
docker-compose version
docker version

Docker-compose 1.21 s Docker-ce 1.18 byl nainstalován.
Krok 4 – Konfigurace Ghost Stack
V tomto kroku nakonfigurujeme docker a vytvoříme nový soubor docker-compose pro instalaci duchů.
Vytvoříme novou vlastní síť dockeru a vytvoříme nový yml soubor s dockerem, který obsahuje tři hlavní služby, včetně databáze MySQL, reverzní proxy Traefik a samotného blogu Ghost.
Vytvořte vlastní síť
Ukažte dostupnou síť dockerů pomocí příkazu docker network níže.
docker network ls
Vytvořte novou vlastní dockerovou síť pro traefik reverzní proxy s názvem 'traefiknet'.
docker network create traefiknet
Nyní znovu zkontrolujte dostupnou síť v systému dockeru.
docker network ls

Vlastní síť pro Treafik s názvem 'traefiknet' byla vytvořena.
Vytvořit adresář projektu
Po vytvoření vlastní sítě docker vytvoříme nový adresář projektu s názvem 'ghost' a vytvoříme nový soubor docker-compose.yml.
Přihlaste se k uživateli 'hakase'.
su - hakase
Vytvořte nový adresář 'ghost' a změňte na něj pracovní adresář.
mkdir ghost/
cd ghost/
A vytvořte nový soubor docker-compose.
touch docker-compose.yml
Vytvoření a konfigurace služby MySQL
MySQL je první služba, kterou chceme vytvořit, a chceme vytvořit kontejner MySQL s konfiguracemi níže.
- Budeme používat docker image MySQL 5.7.
- Připojte datový adresář MySQL do místního hostitelského adresáře dockeru.
- Spuštění služby MySQL v místní interní síti.
- Nakonfigurujte uživatele a heslo MySQL.
- Heslo root MySQL:mypassword
- Databáze pro ducha s názvem 'ghostdb' s uživatelem 'ghost' a heslem je 'ghostdbpass'
- Kontejner MySQL bude pojmenován jako 'mysql'.
V adresáři 'ghost' vytvořte nový adresář s názvem 'data' a upravte soubor 'docker-compose.yml'.
mkdir -p data/
vim docker-compose.yml
Vložte konfiguraci níže.
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 Uložte a ukončete.
Vytvoření a konfigurace Traefik Reverse Proxy
Po vytvoření služby MySQL vytvoříme a nakonfigurujeme reverzní proxy kontejner traefik.
Před úpravou skriptu 'docker-compose.yml' musíme vytvořit novou konfiguraci traefik s názvem 'traefik.toml'.
vim traefik.toml
Níže vložte konfiguraci pravidla traefik.
#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" Uložte a ukončete.
Nyní musíme vytvořit nový soubor pro konfiguraci SSL Letsencrypt 'acme.json'. Slouží k uložení všech letsencrypt generování protokolu.
Vytvořte prázdný soubor 'acme.json' a změňte oprávnění na 600.
touch acme.json
chmod 600 acme.json
Dále upravíme skript 'docker-compose.yml' a přidáme konfiguraci služby traefik.
- Budeme používat nejnovější obrázek traefik docker.
- Kontejner bude pojmenován jako 'traefik'
- Používá vlastní síť 'traefiknet' a odhaluje porty HTTP a HTTPS.
- Připojte soubor docker sock a konfiguraci traefik 'traefik.toml' a 'acme.json'
- Definovali jsme adresu URL řídicího panelu traefik a backend pomocí štítků dockeru.
Upravte soubor 'docker-compose.yml'.
vim docker-compose.yml
Níže vložte konfiguraci služby traefik.
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 Uložte a ukončete.
Vytvoření a konfigurace služby Ghost
Po konfiguraci reverzního proxy serveru traefik vytvoříme hlavní konfiguraci služby duchů.
Podrobnosti konfigurace, které chceme vytvořit.
- Budeme používat verzi ghost v1 a verzi small docker alpine.
- Připojíme adresář ghost content do místního adresáře s názvem 'blog'.
- Služba duchů bude spuštěna na výchozím portu s názvem domény 'gho.hakase-labs.io', konfigurace prostřednictvím štítků dockeru.
- Služba duchů bude používat dvě dockerové sítě, interní a traefiknet.
- Konfigurujeme podrobnosti databáze MySQL z konfigurace kontejneru mysql.
- A duch bude spuštěn, když bude traefik a kontejner MySQL v provozu.
Vytvořte nový adresář s názvem 'blog' a upravte soubor 'docker-compose.yml'.
mkdir -p blog/
vim docker-compose.yml
Vložte konfiguraci níže.
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 Uložte a ukončete.

A nyní máme veškerý adresář a konfiguraci, jak je uvedeno níže.
tree

Krok 5 – Nasazení Ghost s MySQL a Traefik
K sestavení a spuštění celé naší služby ghost stack můžeme použít níže uvedený příkaz.
docker-compose up -d

Po dokončení zkontrolujte všechny spuštěné služby.
docker-compose ps
A výsledek je následující.

Pokud dojde k chybě, zkontrolujte protokol kontejneru pomocí příkazů níže.
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost

Zásobník duchů s MySQL a reverzní proxy Traefik je v provozu.
Krok 6 – Testování
Otevřete ovládací panel Traefik s jeho adresou URL, moje je http://traef.hakase-labs.io/
Přihlaste se pomocí uživatele a hesla v souboru 'traefik.toml'.

A následuje Traefik dashboard.

Pro instalaci Ghost zadejte do adresního řádku adresu URL ducha, moje je http://gho.hakase-labs.io/
A získáte domovskou stránku duchů.

Nyní navštivte stránku správce a nastavte a nakonfigurujte nového uživatele správce. Moje adresa URL je: http://gho.hakase-labs.io/admin/
Kliknutím na zelené tlačítko vytvoříte nového administrátora.

Zadejte podrobný uživatel, heslo, e-mail a znovu klikněte na zelené tlačítko.

Chcete-li pozvat nového člena nebo uživatele, klikněte na odkaz 'Udělám to později...'.

Nyní získáte Ghost Dashboard.

A po vytvoření ukázkového příspěvku je výsledek následující.

Instalace blogu Ghost s databází MySQL a Traefik Reverse Proxy v prostředí Docker byla úspěšně dokončena.
Odkazy
- https://hub.docker.com/_/ghost/
- https://docs.traefik.io/