Docker Guide · 8 min read · Feb 04, 2026
Guida Docker: Distribuzione del Blog Ghost con MySQL e Traefik con Docker

Ghost è una potente piattaforma di pubblicazione e blog open source basata su nodejs. È ben progettata e facile da usare. La piattaforma Ghost è scritta in JavaScript e utilizza node.js come ambiente di runtime. La prima versione di Ghost è stata rilasciata nel 2013 sotto la licenza MIT..
Traefik è un moderno proxy inverso HTTP e bilanciatore di carico per microservizi. Traefik rende facile il deployment di tutti i microservizi, integrandosi con componenti infrastrutturali esistenti come Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, ecc.
In questo tutorial, mostreremo passo dopo passo come installare e configurare Ghost come container Docker. Installeremo e configureremo Ghost sotto l’ultima versione di Docker CE, utilizzeremo MySQL come database e utilizzeremo Traefik come Reverse Proxy.
Requisiti
- Ubuntu 18.04 LTS
- Privilegi di root
Cosa faremo
- Installare Docker CE su Ubuntu 18.04 LTS
- Configurare Docker per Utente Non-root
- Installare Docker Compose
- Configurare Ghost Stack - Creare una Rete Personalizzata
- Creare una Directory di Progetto
- Creare e Configurare il Container MySQL
- Creare e Configurare il Proxy Inverso Traefik
- Creare e Configurare il Container Ghost
- Distribuire Ghost con MySQL e Traefik
- Testare
Passo 1 - Installare Docker CE su Ubuntu 18.04 LTS
Il primo passo che faremo in questo tutorial è installare l’ultima versione di docker-ce del sistema. La versione docker-ce può essere installata dal repository ufficiale di docker.
Aggiungi la chiave docker 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 docker utilizzando il comando apt qui sotto.
sudo apt install docker-ce -yDopo che l’installazione è completata, avvia il servizio docker e abilitalo per l’avvio ogni volta all’avvio del sistema.
systemctl start docker
systemctl enable dockerL’ultima versione di docker-ce è stata installata sul sistema Ubuntu 18.04.

Passo 2 - Configurare Docker per Utente Non-root
In questa guida, tutti i microservizi container saranno eseguiti sotto l’utente normale/non-root. Quindi dobbiamo configurare l’utente per poter eseguire il container Docker e 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 hakaseOra assegna l’utente ‘hakase’ ai gruppi ‘sudo’ e ‘docker’.
usermod -a -G root hakase
usermod -a -G docker hakaseE riavvia il servizio docker.
systemctl restart dockerL’utente ‘hakase’ può ora eseguire il container docker e il comando sudo per i privilegi di root.

Accedi come utente ‘hakase’ e esegui il container hello-world di docker.
su - hakase
docker run -it hello-worldEcco il risultato.

Passo 3 - Installare Docker Compose
In questo tutorial, installeremo il docker compose 1.21 da un file binario nel repository di Github.
Scarica il file binario docker-compose 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-composeE rendi il file ‘docker-compose’ eseguibile cambiando i permessi del file.
sudo chmod +x /usr/local/bin/docker-composeIl docker compose è stato installato - controllalo usando il comando qui sotto.
docker-compose version
docker version
Docker-compose 1.21 con Docker-ce 1.18 è stato installato.
Passo 4 - Configurare Ghost Stack
In questo passo, configureremo il docker e creeremo un nuovo file docker-compose per l’installazione di ghost.
Creeremo una nuova rete personalizzata docker e creeremo un nuovo file yml docker-compose che contiene tre servizi principali, inclusi il database MySQL, il proxy inverso Traefik e il blog Ghost stesso.
Creare una Rete Personalizzata
Mostra la rete docker disponibile utilizzando il comando docker network qui sotto.
docker network lsCrea una nuova rete docker personalizzata per il proxy inverso traefik chiamata ‘traefiknet’.
docker network create traefiknetOra controlla di nuovo la rete disponibile sul sistema docker.
docker network ls
La rete personalizzata per Treafik chiamata ‘traefiknet’ è stata creata.
Creare una Directory di Progetto
Dopo aver creato la rete docker personalizzata, creeremo una nuova directory di progetto chiamata ‘ghost’ e creeremo un nuovo file docker-compose.yml.
Accedi all’utente ‘hakase’.
su - hakaseCrea una nuova directory ‘ghost’ e cambia la directory di lavoro in essa.
mkdir ghost/
cd ghost/E crea un nuovo file docker-compose.
touch docker-compose.ymlCreare e Configurare il Servizio MySQL
MySQL è il primo servizio che vogliamo creare, e vogliamo creare il container MySQL con le configurazioni qui sotto.
- Utilizzeremo l’immagine docker MySQL 5.7.
- Monta la directory dei dati MySQL nella directory host locale di docker.
- Esegui il servizio MySQL sulla rete interna locale.
- Configura l’utente e la password di MySQL. - Password di root MySQL: mypassword
- Database per ghost chiamato ‘ghostdb’ con utente ‘ghost’ e password ‘ghostdbpass’
- Il container MySQL sarà chiamato ‘mysql’.
All’interno della directory ‘ghost’, crea una nuova directory chiamata ‘data’ ed edita il file ‘docker-compose.yml’.
mkdir -p data/
vim docker-compose.ymlIncolla 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: mysqlSalva ed esci.
Creare e Configurare il Proxy Inverso Traefik
Dopo aver creato il servizio MySQL, creeremo e configureremo il container del proxy inverso traefik.
Prima di modificare lo script ‘docker-compose.yml’, dobbiamo creare una nuova configurazione traefik chiamata ‘traefik.toml’.
vim traefik.tomlIncolla la configurazione della regola traefik qui sotto.
#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"
#Definisci l'EntryPoint per HTTP e HTTPS
defaultEntryPoints = ["https","http"]
#Definisci la porta HTTP 80 e
#Porta HTTPS 443 EntryPoint
#Abilita il reindirizzamento automatico da HTTP a HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
#Abilita il Dashboard di Traefik sulla porta 8080
#con metodo di autenticazione di base
#hakase e password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
users = [
"hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
]
[api]
entrypoint="dash"
dashboard = true
#Abilita il retry per inviare una richiesta se si verifica un errore di rete
[retry]
#Definisci la Configurazione del Backend Docker
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false
#Registrazione Letsencrypt
#Definisci la sfida HTTP ACME di Letsencrypt
[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 memorizzare tutti i log generati da letsencrypt.
Crea il file ‘acme.json’ vuoto e cambia i permessi a 600.
touch acme.json
chmod 600 acme.jsonSuccessivamente, modificheremo lo script ‘docker-compose.yml’ e aggiungeremo la configurazione del servizio traefik.
- Utilizzeremo l’ultima immagine docker traefik.
- Il container sarà chiamato ‘traefik’
- Utilizza la rete personalizzata ‘traefiknet’ e espone le porte HTTP e HTTPS.
- Monta il file docker sock e la configurazione traefik ‘traefik.toml’ e ‘acme.json’
- Abbiamo definito l’URL del dashboard di traefik e il backend tramite le etichette docker.
Modifica il ‘docker-compose.yml’.
vim docker-compose.ymlIncolla la configurazione del servizio traefik qui sotto.
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: alwaysSalva ed esci.
Creare e Configurare il Servizio Ghost
Dopo aver configurato il proxy inverso traefik, creeremo la configurazione principale del servizio ghost.
Dettagli di configurazione che vogliamo creare.
- Utilizzeremo la versione ghost v1 e la piccola versione docker alpine.
- Montiamo la directory dei contenuti di ghost nella directory locale chiamata ‘blog’.
- Il servizio ghost verrà eseguito sulla porta predefinita con il nome di dominio ‘gho.hakase-labs.io’, la configurazione tramite etichette docker.
- Il servizio ghost utilizzerà due reti docker, interna e traefiknet.
- Stiamo configurando i dettagli del database MySQL dalla configurazione del container mysql.
- E il ghost verrà avviato quando il container traefik e MySQL è attivo e funzionante.
Crea una nuova directory chiamata ‘blog’ ed edita il file ‘docker-compose.yml’.
mkdir -p blog/
vim docker-compose.ymlIncolla 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: falseSalva ed esci.

E ora abbiamo tutte le directory e la configurazione come mostrato qui sotto.
tree
Passo 5 - Distribuire Ghost con MySQL e Traefik
Per costruire e avviare tutti i nostri servizi ghost stack, possiamo utilizzare il comando qui sotto.
docker-compose up -d
Quando è completato, controlla tutti i servizi in esecuzione.
docker-compose psEcco il risultato.
Se hai un errore, controlla il log del container utilizzando i comandi qui sotto.
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost
Lo stack ghost con MySQL e il proxy inverso Traefik è attivo e funzionante.
Passo 6 - Testare
Apri il 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’.
Ecco il dashboard di Traefik.

Per l’installazione di Ghost, digita l’URL di ghost nella barra degli indirizzi, il mio è http://gho.hakase-labs.io/
E otterrai la home page di ghost.

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

Digita i dettagli dell’utente, la password, l’email e clicca di nuovo il pulsante verde.

Per invitare un nuovo membro o utente, clicca sul link ‘Lo farò più tardi..’.

Ora otterrai il Dashboard di Ghost.

E dopo aver creato il post di esempio, ecco il risultato.

L’installazione del blog Ghost con database MySQL e proxy inverso Traefik nell’ambiente Docker è stata completata con successo.
Riferimenti
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.