GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Guida Docker:distribuzione di Ghost Blog con MySQL e Traefik con Docker

Ghost è una potente piattaforma di pubblicazione e blog open source basata su nodejs. È ben progettato e facile da usare. La piattaforma fantasma è scritta in JavaScript e utilizza node.js come ambiente di runtime. La prima versione Ghost rilasciata nel 2013 con licenza MIT..

Traefik è un moderno proxy inverso HTTP e un servizio di bilanciamento del carico per microservizi. Traefik semplifica l'implementazione di tutti i microservizi, integrandoli con i componenti dell'infrastruttura esistente come Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul ecc.

In questo tutorial, mostreremo passo dopo passo come installare e configurare Ghost come contenitore Docker. Installeremo e configureremo Ghost con l'ultima versione di Docker CE, useremo MySQL come database e useremo Traefik come proxy inverso.

Prerequisiti

  • Ubuntu 18.04 LTS
  • Privilegi di root

Cosa faremo

  1. Installa Docker CE su Ubuntu 18.04 LTS
  2. Imposta Docker per utenti non root
  3. Installa Docker Compose
  4. Configura lo stack fantasma
    • Crea una rete personalizzata
    • Crea una directory di progetto
    • Crea e configura MySQL Container
    • Crea e configura il proxy inverso Traefik
    • Crea e configura Ghost Container
  5. Distribuisci Ghost con MySQL e Traefik
  6. Test

Passaggio 1 - Installa Docker CE su Ubuntu 18.04 LTS

Il primo passo che faremo in questo tutorial è installare l'ultima versione docker-ce del sistema. La versione docker-ce può essere installata dal repository docker ufficiale.

Aggiungi la chiave mobile e il repository 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"

Il comando aggiornerà automaticamente tutti i repository sul sistema.

Ora installa la finestra mobile usando il comando apt di seguito.

sudo apt install docker-ce -y

Al termine dell'installazione, avvia il servizio Docker e abilitalo all'avvio ogni volta all'avvio del sistema.

systemctl start docker
systemctl enable docker

L'ultima versione docker-ce è stata installata sul sistema Ubuntu 18.04.

Passaggio 2:installazione della finestra mobile per utenti non root

In questa guida, tutti i microservizi del contenitore verranno eseguiti con l'utente normale/non root. Quindi dobbiamo configurare l'utente per poter eseguire il contenitore Docker ed eseguire il comando sudo per i privilegi di root.

Crea un nuovo utente chiamato 'hakase' e crea la password.

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

Ora assegna l'utente 'hakase' ai gruppi 'sudo' e 'docker'.

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

E riavvia il servizio Docker.

systemctl restart docker

Il 'hakase' ora può eseguire il contenitore docker ed eseguire il comando sudo per i privilegi di root.

Accedi come utente 'hakase' ed esegui il contenitore hello-world della finestra mobile.

su - hakase
docker run -it hello-world

E di seguito il risultato.

Passaggio 3 - Installa Docker Compose

In questo tutorial, installeremo la finestra mobile compose 1.21 da un file binario sul repository Github.

Scarica il binario di composizione mobile nella directory '/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

E rendi eseguibile il file 'docker-compose' modificando l'autorizzazione del file.

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

La finestra mobile Compose è stata installata:controllala utilizzando il comando seguente.

docker-compose version
docker version

Docker-compose 1.21 con Docker-ce 1.18 è stato installato.

Passaggio 4:configurazione dello stack fantasma

In questo passaggio, configureremo la finestra mobile e creeremo un nuovo file di composizione della finestra mobile per l'installazione fantasma.

Creeremo una nuova rete personalizzata Docker e creeremo un nuovo file yml di composizione Docker che contiene tre servizi principali, tra cui il database MySQL, il proxy inverso di Traefik e il blog Ghost stesso.

Crea una rete personalizzata

Mostra la rete Docker disponibile utilizzando il comando di rete Docker di seguito.

docker network ls

Crea una nuova rete Docker personalizzata per il proxy inverso traefik denominata 'traefiknet'.

docker network create traefiknet

Ora controlla di nuovo la rete disponibile sul sistema Docker.

docker network ls

È stata creata la rete personalizzata per Treafik denominata 'traefiknet'.

Crea una directory di progetto

Dopo aver creato la rete personalizzata della finestra mobile, creeremo una nuova directory di progetto denominata 'ghost' e creeremo un nuovo file docker-compose.yml.

Accedi all'utente 'hakase'.

su - hakase

Crea una nuova directory 'fantasma' e cambia la directory di lavoro in essa.

mkdir ghost/
cd ghost/

E crea un nuovo file di composizione della finestra mobile.

touch docker-compose.yml

Crea e configura il servizio MySQL

MySQL è il primo servizio che vogliamo creare e vogliamo creare il contenitore MySQL con le configurazioni seguenti.

  • Utilizzeremo l'immagine Docker MySQL 5.7.
  • Monta la directory dei dati MySQL nella directory host della finestra mobile locale.
  • Esecuzione del servizio MySQL sulla rete interna locale.
  • Configura utente e password MySQL.
    • Password radice MySQL:miapassword
    • Il database per il fantasma denominato 'ghostdb' con utente 'ghost' e password è 'ghostdbpass'
  • Il contenitore MySQL sarà denominato 'mysql'.

All'interno della directory 'ghost', crea una nuova directory denominata 'data' e modifica il file 'docker-compose.yml'.

mkdir -p data/
vim docker-compose.yml

Incolla la configurazione qui sotto.

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

Salva ed esci.

Crea e configura il proxy inverso Traefik

Dopo aver creato il servizio MySQL, creeremo e configureremo il container proxy inverso traefik.

Prima di modificare lo script 'docker-compose.yml', dobbiamo creare una nuova configurazione di traefik denominata 'traefik.toml'.

vim traefik.toml

Incolla la configurazione della regola traefik di seguito.

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

Salva ed esci.

Ora dobbiamo creare un nuovo file per la configurazione SSL Letsencrypt 'acme.json'. Viene utilizzato per archiviare tutti i Letencrypt genera un registro.

Crea il file vuoto "acme.json" e cambia l'autorizzazione a 600.

touch acme.json
chmod 600 acme.json

Successivamente, modificheremo lo script 'docker-compose.yml' e aggiungeremo la configurazione del servizio traefik.

  • Utilizzeremo l'ultima immagine Docker Traefik.
  • Il contenitore sarà denominato 'traefik'
  • E' utilizzata la rete personalizzata 'traefiknet' ed espone le porte HTTP e HTTPS.
  • Monta il file sock docker e la configurazione di traefik 'traefik.toml' e 'acme.json'
  • Abbiamo definito l'URL della dashboard di traefik e il back-end tramite le etichette docker.

Modifica 'docker-compose.yml'.

vim docker-compose.yml

Incolla la configurazione del servizio traefik di seguito.

  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

Salva ed esci.

Crea e configura il servizio Ghost

Dopo aver configurato il proxy inverso traefik, creeremo la configurazione del servizio fantasma principale.

Dettagli di configurazione che vogliamo creare.

  • Utilizzeremo la versione Ghost v1 e Small Docker Alpine.
  • Monteremo la directory dei contenuti fantasma nella directory locale denominata 'blog'.
  • Il servizio fantasma verrà eseguito sulla porta predefinita con il nome di dominio 'gho.hakase-labs.io', la configurazione tramite etichette docker.
  • Il servizio fantasma utilizzerà due reti docker, interna e traefiknet.
  • Stiamo configurando i dettagli del database MySQL dalla configurazione del contenitore mysql.
  • E il ghost verrà avviato quando il contenitore traefik e MySQL sarà attivo e funzionante.

Crea una nuova directory denominata 'blog' e modifica il file 'docker-compose.yml'.

mkdir -p blog/
vim docker-compose.yml

Incolla la configurazione qui sotto.

  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

Salva ed esci.

E ora abbiamo tutte le directory e le configurazioni come mostrato di seguito.

tree

Passaggio 5 - Distribuisci Ghost con MySQL e Traefik

Per creare ed eseguire tutto il nostro servizio di stack fantasma, possiamo utilizzare il comando seguente.

docker-compose up -d

Al termine, controlla tutti i servizi in esecuzione.

docker-compose ps

E il seguente è il risultato.

In caso di errore, controlla il registro del contenitore utilizzando i comandi seguenti.

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

Lo stack fantasma con MySQL e il proxy inverso di Traefik è attivo e funzionante.

Fase 6 - Test

Apri la dashboard di Traefik con il suo URL, il mio è http://traef.hakase-labs.io/

Accedi con l'utente e la password nel file 'traefik.toml'.

E di seguito c'è la dashboard di Traefik.

Per l'installazione di Ghost, digita l'URL fantasma nella barra degli indirizzi, il mio è http://gho.hakase-labs.io/

E otterrai la home page dei fantasmi.

Ora visita la pagina di amministrazione per impostare e configurare un nuovo utente amministratore. Il mio URL è: http://gho.hakase-labs.io/admin/

Fai clic sul pulsante verde per creare un nuovo utente amministratore.

Digita il dettaglio utente, password, email e fai nuovamente clic sul pulsante verde.

Per invitare un nuovo membro o utente, fai clic sul link "Lo farò più tardi..".

Ora otterrai la dashboard di Ghost.

E dopo aver creato il post di esempio, il risultato è il seguente.

L'installazione del blog Ghost con database MySQL e Traefik Reverse Proxy nell'ambiente Docker è stata completata con successo.

Riferimenti

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

Docker
  1. Come installare il software Ghost Blog con Apache e SSL su Ubuntu 16.04

  2. Esecuzione di PostgreSQL in Docker, una guida rapida e pratica

  3. Come installare WordPress con Docker, una guida facile da seguire

  4. Come eseguire MySQL in Docker Container:una guida semplice e facile da seguire

  5. 7 suggerimenti utili per l'hosting automatico di un'istanza Ghost con Docker

Hosting virtuale con vsftpd e MySQL su Ubuntu 12.10

Come installare il software Ghost Blog con Apache e SSL su Ubuntu 15.10

Come configurare MySQL con Docker in Linux

Distribuzione di uno stack EFK con Docker

Guida completa all'hosting automatico di Ghost CMS con Docker

Come distribuire un'applicazione PHP con Nginx e MySQL utilizzando Docker e Docker Compose