Docker Gids: Inzet van Ghost Blog met MySQL en Traefik met Docker
Ghost is een krachtig open bron publicatie en blog platform gebaseerd op nodejs. Het is goed ontworpen en gemakkelijk te gebruiken. Het ghost platform is geschreven in JavaScript en gebruikt node.js als runtime omgeving. De eerste Ghost versie verscheen in 2013 onder de MIT licentie…
Traefik is een moderne HTTP reverse proxy en load balancer voor microservices. Traefik maakt het inzetten van alle microservices eenvoudig, geïntegreerd met bestaande infrastructuurcomponenten zoals Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul enz.
In deze zelfstudie laten we stap-voor-stap zien hoe je Ghost installeert en configureert als Docker container. We zullen Ghost installeren en configureren onder de nieuwste Docker CE versie, de MySQL als databank gebruiken en de Traefik als Reverse Proxy gebruiken.
Vereisten
- Ubuntu 18.04 LTS
- Root voorrechten
Wat we zullen doen
- Installeer Docker CE op Ubuntu 18.04 LTS
- Docker instellen voor niet-root gebruiker
- Installeer Docker Compose
- Configureer Ghost Stack
- Creëer een Aangepast Netwerk
- Maak een Project Directory aan
- Maak en Configureer een MySQL Container
- Maak en Configureer Traefik Reverse Proxy
- Ghost Container aanmaken en configureren
- Zet Ghost in met MySQL en Traefik
- Testen van
Stap 1 – Installeer Docker CE op Ubuntu 18.04 LTS
De eerste stap die we in deze zelfstudie zullen doen is de nieuwste docker-ce versie op het systeem installeren. De docker-ce versie kan geïnstalleerd worden uit de officiële docker repository.
Voeg de docker sleutel en docker-ce repository toe.
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"
Het commando zal automatisch alle repositories op het systeem bijwerken.
Installeer nu docker met het onderstaande apt commando.
sudo apt install docker-ce -y
Nadat de installatie voltooid is, start je de docker service en schakel je die in om telkens bij het opstarten van het systeem te starten.
systemctl start docker
systemctl enable docker
De nieuwste docker-ce versie is geïnstalleerd op het Ubuntu 18.04 systeem.
Stap 2 – Docker instellen voor niet-root gebruiker
In deze gids zullen alle container microservices onder de gewone/niet-root gebruiker draaien. We moeten dus de gebruiker instellen om de Docker container te kunnen draaien en het sudo commando voor root rechten uit te voeren.
Maak een nieuwe gebruiker met de naam ‘hakase’ en maak het wachtwoord.
useradd -m -s /bin/bash hakase
passwd hakase
Wijs de ‘hakase’ gebruiker nu toe aan de groepen ‘sudo’ en ‘docker’.
usermod -a -G root hakase
usermod -a -G docker hakase
En start de docker service opnieuw.
systemctl restart docker
De ‘hakase’ kan nu de docker container draaien en het sudo commando uitvoeren voor root privileges.
Log in als gebruiker ‘hakase’ en voer de docker hello-world container uit.
su - hakase
docker run -it hello-world
En het volgende is het resultaat.
Stap 3 – Installeer Docker Compose
In deze tutorial installeren we de docker compose 1.21 uit een binair bestand op de Github repository.
Download de docker-compose binary naar de ‘/usr/local/bin’ map.
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
En maak het ‘docker-compose’ bestand uitvoerbaar door de bestandstoestemming te veranderen.
sudo chmod +x /usr/local/bin/docker-compose
De docker compose is geïnstalleerd – controleer het met het onderstaande commando.
docker-compose version
docker version
Docker-compose 1.21 met Docker-ce 1.18 is geïnstalleerd.
Stap 4 – Configureer Ghost Stack
In deze stap configureren we de docker en maken we een nieuw docker-compose bestand voor de ghost installatie.
We maken een nieuw docker-aangepast netwerk aan en maken een nieuw docker-compose yml bestand dat drie hoofddiensten bevat, waaronder MySQL database, Traefik reverse proxy, en Ghost blog zelf.
Maak een aangepast netwerk
Toon het beschikbare docker netwerk met het onderstaande docker network commando.
docker network ls
Maak een nieuw aangepast docker netwerk voor de traefik omgekeerde proxy met de naam ’traefiknet’.
docker network create traefiknet
Controleer nu opnieuw het beschikbare netwerk op het docker systeem.
docker network ls
Het aangepaste netwerk voor Treafik met de naam ’traefiknet’ is aangemaakt.
Maak een projectdirectory
Na het aanmaken van het docker aangepaste netwerk maken we een nieuwe projectdirectory aan met de naam ‘ghost’ en maken we een nieuw docker-compose.yml bestand.
Meld je aan als gebruiker ‘hakase’.
su - hakase
Maak een nieuwe ‘ghost’ map aan en verander de werkdirectory daarin.
mkdir ghost/
cd ghost/
En maak een nieuw docker-compose bestand aan.
touch docker-compose.yml
Maak en configureer de dienst MySQL
MySQL is de eerste dienst die we willen aanmaken, en we willen de MySQL container aanmaken met onderstaande configuraties.
- We zullen het MySQL 5.7 docker image gebruiken.
- Mount de MySQL gegevensmap naar de lokale docker host directory.
- Draai de MySQL service op het lokale interne netwerk.
- Configureer MySQL gebruiker en wachtwoord.
- MySQL root wachtwoord: mypassword
- Database voor de ghost heet ‘ghostdb’ met gebruiker ‘ghost’ en wachtwoord is ‘ghostdbpass’
- De MySQL container krijgt de naam ‘mysql’.
Maak binnen de ‘ghost’ map een nieuwe map met de naam ‘data’ en bewerk het ‘docker-compose.yml’ bestand.
mkdir -p data/
vim docker-compose.yml
Plak de configuratie hieronder.
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
Sla op en sluit af.
Maak en configureer Traefik Reverse Proxy
Na het aanmaken van de MySQL dienst, zullen we de traefik reverse proxy container aanmaken en instellen.
Voor we het ‘docker-compose.yml’ script bewerken, moeten we een nieuwe traefik configuratie maken met de naam ’traefik.toml’.
vim traefik.toml
Plak de traefik regelconfiguratie hieronder.
#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"
Sla op en sluit af.
Nu moeten we een nieuw bestand maken voor de SSL Letsencrypt configuratie ‘acme.json’. Het wordt gebruikt om alle logs in op te slaan die Letsencrypt genereert.
Maak het lege ‘acme.json’ bestand aan en verander de toestemming in 600.
touch acme.json
chmod 600 acme.json
Vervolgens bewerken we het ‘docker-compose.yml’ script en voegen de traefik dienstconfiguratie toe.
- We zullen het nieuwste traefik docker image gebruiken.
- De container krijgt de naam ’traefik’.
- Hij gebruikt het aangepaste netwerk ’traefiknet’, en stelt de HTTP en HTTPS poorten bloot.
- Monteer het docker sock bestand en de traefik configuratie ’traefik.toml’ en ‘acme.json’
- We definieerden de traefik dashboard URL en backend via de docker labels.
Bewerk de ‘docker-compose.yml’.
vim docker-compose.yml
Plak de traefik dienstconfiguratie eronder.
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
Sla op en sluit af.
Maak en configureer de spookdienst
Na het configureren van de traefik reverse proxy, maken we de hoofdconfiguratie van de ghost service.
Configuratiedetails die we willen maken.
- We zullen de ghost v1 en de kleine docker alpine versie gebruiken.
- We zullen de ghost inhoudsmap mounten naar de lokale map met de naam ‘blog’.
- De ghost dienst zal draaien op de standaard poort met de domeinnaam ‘gho.hakase-labs.io’, de configuratie via docker labels.
- De spookdienst zal twee docker netwerken gebruiken, intern en traefiknet.
- We configureren de gegevens van de MySQL databank uit de configuratie van de mysql container.
- En de ghost zal gestart worden als de traefik en de MySQL container up and running zijn.
Maak een nieuwe map met de naam ‘blog’ en bewerk het ‘docker-compose.yml’ bestand.
mkdir -p blog/
vim docker-compose.yml
Plak er de onderstaande configuratie in.
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
Sla op en sluit af.
En nu hebben we alle directory en configuratie zoals hieronder getoond.
tree
Stap 5 – Zet Ghost in met MySQL en Traefik
Om al onze ghost stack diensten te bouwen en te draaien, kunnen we het onderstaande commando gebruiken.
docker-compose up -d
Als het klaar is, controleer je alle draaiende diensten.
docker-compose ps
En het volgende is het resultaat.
Als je een fout hebt, controleer dan het container log met onderstaande commando’s.
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost
De ghost stack met MySQL en de Traefik reverse proxy is up and running.
Stap 6 – Testen
Open het Traefik dashboard met zijn URL, de mijne ishttp://traef.hakase-labs.io/
Log in met de gebruiker en het wachtwoord op het ’traefik.toml’ bestand.
En hierna volgt het Traefik dashboard.
Voor de Ghost installatie typ je de ghost URL in de adresbalk, de mijne ishttp://gho.hakase-labs.io/
En je krijgt de ghost startpagina.
Bezoek nu de admin pagina om een nieuwe admin gebruiker in te stellen en te configureren. Mijn URL is: http://gho.hakase-labs.io/admin/
Klik op de groene knop om een nieuwe admin gebruiker aan te maken.
Type detail gebruiker, wachtwoord, e-mail, en klik weer op de groene knop.
Om een nieuw lid of gebruiker uit te nodigen, klik je op de ‘I will do this later…’ link.
Nu krijg je het Ghost Dashboard.
En na het maken van de voorbeeldpost is het volgende het resultaat.
Ghost blog installatie met MySQL database en Traefik Reverse Proxy op de Docker omgeving is met succes voltooid.