GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Guide Docker :Déployer Ghost Blog avec MySQL et Traefik avec Docker

Ghost est une puissante plateforme de publication et de blog open source basée sur nodejs. Il est bien conçu et facile à utiliser. La plateforme fantôme est écrite en JavaScript et utilise node.js comme environnement d'exécution. La première version de Ghost sortie en 2013 sous licence MIT..

Traefik est un proxy inverse HTTP moderne et un équilibreur de charge pour les microservices. Traefik facilite le déploiement de tous les microservices, en les intégrant aux composants d'infrastructure existants tels que Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, etc.

Dans ce didacticiel, nous allons montrer étape par étape comment installer et configurer Ghost en tant que conteneur Docker. Nous installerons et configurerons Ghost sous la dernière version de Docker CE, utiliserons MySQL comme base de données et utiliserons Traefik comme proxy inverse.

Prérequis

  • Ubuntu 18.04 LTS
  • Privilèges root

Ce que nous allons faire

  1. Installer Docker CE sur Ubuntu 18.04 LTS
  2. Configurer Docker pour un utilisateur non root
  3. Installer Docker Compose
  4. Configurer la pile fantôme
    • Créer un réseau personnalisé
    • Créer un répertoire de projets
    • Créer et configurer un conteneur MySQL
    • Créer et configurer le proxy inverse Traefik
    • Créer et configurer un conteneur fantôme
  5. Déployer Ghost avec MySQL et Traefik
  6. Test

Étape 1 - Installer Docker CE sur Ubuntu 18.04 LTS

La première étape que nous ferons dans ce tutoriel consiste à installer la dernière version docker-ce du système. La version docker-ce peut être installée à partir du référentiel officiel de docker.

Ajoutez la clé docker et le référentiel 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"

La commande mettra automatiquement à jour tous les référentiels du système.

Installez maintenant docker à l'aide de la commande apt ci-dessous.

sudo apt install docker-ce -y

Une fois l'installation terminée, démarrez le service Docker et activez-le pour qu'il se lance à chaque fois au démarrage du système.

systemctl start docker
systemctl enable docker

La dernière version de docker-ce a été installée sur le système Ubuntu 18.04.

Étape 2 - Configurer Docker pour un utilisateur non root

Dans ce guide, tous les microservices de conteneur seront exécutés sous l'utilisateur normal/non root. Nous devons donc configurer l'utilisateur pour qu'il puisse exécuter le conteneur Docker et exécuter la commande sudo pour les privilèges root.

Créez un nouvel utilisateur nommé 'hakase' et créez le mot de passe.

useradd -m -s /bin/bash hakase
passwd hakase

Attribuez maintenant l'utilisateur 'hakase' aux groupes 'sudo' et 'docker'.

usermod -a -G root hakase
usermod -a -G docker hakase

Et redémarrez le service docker.

systemctl restart docker

Le 'hakase' peut maintenant exécuter le conteneur docker et exécuter la commande sudo pour les privilèges root.

Connectez-vous en tant qu'utilisateur "hakase" et exécutez le conteneur docker hello-world.

su - hakase
docker run -it hello-world

Et voici le résultat.

Étape 3 - Installer Docker Compose

Dans ce tutoriel, nous allons installer le docker compose 1.21 à partir d'un fichier binaire sur le dépôt Github.

Téléchargez le binaire docker-compose dans le répertoire '/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

Et rendez le fichier 'docker-compose' exécutable en modifiant l'autorisation du fichier.

sudo chmod +x /usr/local/bin/docker-compose

Le docker compose a été installé - vérifiez-le à l'aide de la commande ci-dessous.

docker-compose version
docker version

Docker-compose 1.21 avec Docker-ce 1.18 a été installé.

Étape 4 - Configurer Ghost Stack

Dans cette étape, nous allons configurer le docker et créer un nouveau fichier docker-compose pour l'installation fantôme.

Nous allons créer un nouveau réseau personnalisé docker et créer un nouveau fichier yml composé par docker qui contient trois services principaux, notamment la base de données MySQL, le proxy inverse Traefik et le blog Ghost lui-même.

Créer un réseau personnalisé

Affichez le réseau docker disponible à l'aide de la commande docker network ci-dessous.

docker network ls

Créez un nouveau réseau docker personnalisé pour le proxy inverse traefik nommé "traefiknet".

docker network create traefiknet

Vérifiez à nouveau le réseau disponible sur le système docker.

docker network ls

Le réseau personnalisé pour Treafik nommé 'traefiknet' a été créé.

Créer un répertoire de projet

Après avoir créé le réseau personnalisé docker, nous allons créer un nouveau répertoire de projet nommé "ghost" et créer un nouveau fichier docker-compose.yml.

Connectez-vous à l'utilisateur 'hakase'.

su - hakase

Créez un nouveau répertoire "fantôme" et modifiez-le comme répertoire de travail.

mkdir ghost/
cd ghost/

Et créez un nouveau fichier docker-compose.

touch docker-compose.yml

Créer et configurer le service MySQL

MySQL est le premier service que nous voulons créer, et nous voulons créer le conteneur MySQL avec les configurations ci-dessous.

  • Nous utiliserons l'image docker MySQL 5.7.
  • Montez le répertoire de données MySQL dans le répertoire hôte Docker local.
  • Exécution du service MySQL sur le réseau interne local
  • Configurer l'utilisateur et le mot de passe MySQL.
    • Mot de passe racine MySQL :mypassword
    • Base de données pour le fantôme nommé 'ghostdb' avec l'utilisateur 'ghost' et le mot de passe 'ghostdbpass'
  • Le conteneur MySQL sera nommé "mysql".

Dans le répertoire 'ghost', créez un nouveau répertoire nommé 'data' et modifiez le fichier 'docker-compose.yml'.

mkdir -p data/
vim docker-compose.yml

Collez la configuration ci-dessous.

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

Enregistrez et quittez.

Créer et configurer le proxy inverse Traefik

Après avoir créé le service MySQL, nous allons créer et configurer le conteneur de proxy inverse traefik.

Avant de modifier le script 'docker-compose.yml', nous devons créer une nouvelle configuration traefik nommée 'traefik.toml'.

vim traefik.toml

Collez la configuration de la règle traefik ci-dessous.

#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"

Enregistrez et quittez.

Nous devons maintenant créer un nouveau fichier pour la configuration SSL Letsencrypt 'acme.json'. Il est utilisé pour stocker tous les letencrypt générer un journal.

Créez le fichier 'acme.json' vierge et changez l'autorisation en 600.

touch acme.json
chmod 600 acme.json

Ensuite, nous allons modifier le script 'docker-compose.yml' et ajouter la configuration du service traefik.

  • Nous utiliserons la dernière image traefik docker.
  • Le conteneur sera nommé 'traefik'
  • Il utilise le réseau personnalisé "traefiknet" et expose les ports HTTP et HTTPS.
  • Montez le fichier docker sock et la configuration traefik 'traefik.toml' et 'acme.json'
  • Nous avons défini l'URL et le backend du tableau de bord traefik via les libellés Docker.

Modifiez le 'docker-compose.yml'.

vim docker-compose.yml

Collez la configuration du service traefik ci-dessous.

  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

Enregistrez et quittez.

Créer et configurer le service fantôme

Après avoir configuré le proxy inverse traefik, nous allons créer la configuration principale du service fantôme.

Détails de configuration que nous voulons créer.

  • Nous utiliserons le ghost v1 et la petite version docker alpine.
  • Nous allons monter le répertoire de contenu fantôme dans le répertoire local nommé "blog".
  • Le service fantôme s'exécutera sur le port par défaut avec le nom de domaine "gho.hakase-labs.io", la configuration via les libellés docker.
  • Le service fantôme utilisera deux réseaux Docker, interne et traefiknet.
  • Nous configurons les détails de la base de données MySQL à partir de la configuration du conteneur mysql.
  • Et le fantôme sera démarré lorsque le conteneur traefik et MySQL sera opérationnel.

Créez un nouveau répertoire nommé 'blog' et modifiez le fichier 'docker-compose.yml'.

mkdir -p blog/
vim docker-compose.yml

Collez la configuration ci-dessous.

  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

Enregistrez et quittez.

Et maintenant, nous avons tous les répertoires et configurations comme indiqué ci-dessous.

tree

Étape 5 - Déployer Ghost avec MySQL et Traefik

Pour créer et exécuter tout notre service de pile fantôme, nous pouvons utiliser la commande ci-dessous.

docker-compose up -d

Une fois terminé, vérifiez tous les services en cours d'exécution.

docker-compose ps

Et voici le résultat.

Si vous rencontrez une erreur, vérifiez le journal du conteneur à l'aide des commandes ci-dessous.

docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost

La pile fantôme avec MySQL et le proxy inverse Traefik est opérationnel.

Étape 6 - Tester

Ouvrez le tableau de bord Traefik avec son URL, la mienne est http://traef.hakase-labs.io/

Connectez-vous avec l'utilisateur et le mot de passe sur le fichier 'traefik.toml'.

Et voici le tableau de bord Traefik.

Pour l'installation de Ghost, saisissez l'URL fantôme dans la barre d'adresse, la mienne est http://gho.hakase-labs.io/

Et vous obtiendrez la page d'accueil fantôme.

Visitez maintenant la page d'administration pour configurer et configurer un nouvel utilisateur administrateur. Mon URL est : http://gho.hakase-labs.io/admin/

Cliquez sur le bouton vert pour créer un nouvel utilisateur administrateur.

Tapez les détails de l'utilisateur, du mot de passe, de l'e-mail et cliquez à nouveau sur le bouton vert.

Pour inviter un nouveau membre ou utilisateur, cliquez sur le lien "Je le ferai plus tard".

Vous obtiendrez maintenant le tableau de bord Ghost.

Et après avoir créé l'exemple de publication, voici le résultat.

L'installation du blog Ghost avec la base de données MySQL et le proxy inverse Traefik sur l'environnement Docker s'est terminée avec succès.

Références

  • https://hub.docker.com/_/ghost/
  • https://docs.traefik.io/

Docker
  1. Comment installer le logiciel Ghost Blog avec Apache et SSL sur Ubuntu 16.04

  2. Exécuter PostgreSQL dans Docker, un guide rapide et pratique

  3. Comment installer WordPress avec Docker, un guide facile à suivre

  4. Comment exécuter MySQL dans Docker Container :un guide simple et facile à suivre

  5. Comment installer et héberger un serveur OpenVPN avec Docker

Hébergement virtuel avec vsftpd et MySQL sur Ubuntu 12.10

Comment installer le logiciel Ghost Blog avec Apache et SSL sur Ubuntu 15.10

Comment configurer MySQL avec Docker sous Linux

Déployer une pile EFK avec Docker

Guide complet de l'auto-hébergement de Ghost CMS avec Docker

Comment déployer une application PHP avec Nginx et MySQL à l'aide de Docker et Docker Compose