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/