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
- Installa Docker CE su Ubuntu 18.04 LTS
- Imposta Docker per utenti non root
- Installa Docker Compose
- 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
- Distribuisci Ghost con MySQL e Traefik
- 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/