GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Docker Guide:Deploying Ghost Blog with MySQL a Traefik with Docker

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

  1. Nainstalujte Docker CE na Ubuntu 18.04 LTS
  2. Nastavit Docker pro uživatele bez oprávnění root
  3. Nainstalujte Docker Compose
  4. 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
  5. Nasaďte Ghost s MySQL a Traefik
  6. 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/

Docker
  1. Jak nainstalovat software Ghost Blog pomocí Apache a SSL na Ubuntu 16.04

  2. Jak nainstalovat WordPress s Dockerem, snadno sledovatelný průvodce

  3. Jak spustit MySQL v Docker Container:Jednoduchý a snadno sledovatelný průvodce

  1. Spuštění PostgreSQL v Dockeru, Rychlý a praktický průvodce

  2. Jak nainstalovat a hostovat server OpenVPN pomocí Dockeru

  3. 7 užitečných tipů pro vlastní hostování instance Ghost pomocí Dockeru

  1. Průvodce událostmi a plánovačem událostí MySQL

  2. Jak nasadit a spravovat MongoDB pomocí Dockeru

  3. Průvodce funkcí data MySQL s příklady