Docker Guide · 9 min read · Feb 04, 2026
Guia Docker: Implantando o Blog Ghost com MySQL e Traefik com Docker

Ghost é uma poderosa plataforma de publicação e blog de código aberto baseada em nodejs. É bem projetada e fácil de usar. A plataforma Ghost é escrita em JavaScript e usa node.js como ambiente de execução. A primeira versão do Ghost foi lançada em 2013 sob a licença MIT.
Traefik é um moderno proxy reverso HTTP e balanceador de carga para microsserviços. O Traefik torna a implantação de todos os microsserviços fácil, integrado com componentes de infraestrutura existentes, como Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, etc.
Neste tutorial, mostraremos passo a passo como instalar e configurar o Ghost como um contêiner Docker. Instalaremos e configuraremos o Ghost na versão mais recente do Docker CE, usaremos o MySQL como banco de dados e usaremos o Traefik como um Proxy Reverso.
Pré-requisitos
- Ubuntu 18.04 LTS
- Privilégios de root
O que faremos
- Instalar Docker CE no Ubuntu 18.04 LTS
- Configurar Docker para Usuário Não-root
- Instalar Docker Compose
- Configurar a Pilha do Ghost - Criar uma Rede Personalizada
- Criar um Diretório de Projeto
- Criar e Configurar o Contêiner MySQL
- Criar e Configurar o Proxy Reverso Traefik
- Criar e Configurar o Contêiner Ghost
- Implantar o Ghost com MySQL e Traefik
- Testes
Passo 1 - Instalar Docker CE no Ubuntu 18.04 LTS
O primeiro passo que faremos neste tutorial é instalar a versão mais recente do docker-ce do sistema. A versão do docker-ce pode ser instalada a partir do repositório oficial do docker.
Adicione a chave do docker e o repositório 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"O comando atualizará automaticamente todos os repositórios no sistema.
Agora instale o docker usando o comando apt abaixo.
sudo apt install docker-ce -yApós a instalação ser concluída, inicie o serviço docker e habilite-o para iniciar toda vez que o sistema for iniciado.
systemctl start docker
systemctl enable dockerA versão mais recente do docker-ce foi instalada no sistema Ubuntu 18.04.

Passo 2 - Configurar Docker para Usuário Não-root
Neste guia, todos os microsserviços do contêiner serão executados sob o usuário normal/não-root. Portanto, precisamos configurar o usuário para que ele possa executar o contêiner Docker e executar o comando sudo para privilégios de root.
Crie um novo usuário chamado ‘hakase’ e crie a senha.
useradd -m -s /bin/bash hakase
passwd hakaseAgora atribua o usuário ‘hakase’ aos grupos ‘sudo’ e ‘docker’.
usermod -a -G root hakase
usermod -a -G docker hakaseE reinicie o serviço docker.
systemctl restart dockerO ‘hakase’ agora pode executar o contêiner docker e executar o comando sudo para privilégios de root.

Faça login como usuário ‘hakase’ e execute o contêiner hello-world do docker.
su - hakase
docker run -it hello-worldE a seguir está o resultado.

Passo 3 - Instalar Docker Compose
Neste tutorial, instalaremos o docker compose 1.21 a partir de um arquivo binário no repositório do Github.
Baixe o binário do docker-compose para o diretório ‘/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 torne o arquivo ‘docker-compose’ executável alterando a permissão do arquivo.
sudo chmod +x /usr/local/bin/docker-composeO docker compose foi instalado - verifique usando o comando abaixo.
docker-compose version
docker version
Docker-compose 1.21 com Docker-ce 1.18 foi instalado.
Passo 4 - Configurar a Pilha do Ghost
Neste passo, configuraremos o docker e criaremos um novo arquivo docker-compose para a instalação do ghost.
Criamos uma nova rede personalizada do docker e criamos um novo arquivo yml do docker-compose que contém três serviços principais, incluindo o banco de dados MySQL, o proxy reverso Traefik e o blog Ghost em si.
Criar uma Rede Personalizada
Mostre a rede docker disponível usando o comando de rede docker abaixo.
docker network lsCrie uma nova rede personalizada do docker para o proxy reverso traefik chamada ‘traefiknet’.
docker network create traefiknetAgora verifique novamente a rede disponível no sistema docker.
docker network ls
A rede personalizada para Treafik chamada ‘traefiknet’ foi criada.
Criar um Diretório de Projeto
Após criar a rede personalizada do docker, criaremos um novo diretório de projeto chamado ‘ghost’ e criaremos um novo arquivo docker-compose.yml.
Faça login no usuário ‘hakase’.
su - hakaseCrie um novo diretório ‘ghost’ e mude o diretório de trabalho para ele.
mkdir ghost/
cd ghost/E crie um novo arquivo docker-compose.
touch docker-compose.ymlCriar e Configurar o Serviço MySQL
O MySQL é o primeiro serviço que queremos criar, e queremos criar o contêiner MySQL com as configurações abaixo.
- Usaremos a imagem docker do MySQL 5.7.
- Montar o diretório de dados do MySQL no diretório do host local do docker.
- Executar o serviço MySQL na rede interna local.
- Configurar usuário e senha do MySQL. - Senha root do MySQL: mypassword
- Banco de dados para o ghost chamado ‘ghostdb’ com usuário ‘ghost’ e senha ‘ghostdbpass’
- O contêiner MySQL será nomeado como ‘mysql’.
Dentro do diretório ‘ghost’, crie um novo diretório chamado ‘data’ e edite o arquivo ‘docker-compose.yml’.
mkdir -p data/
vim docker-compose.ymlCole a configuração abaixo.
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: mysqlSalve e saia.
Criar e Configurar o Proxy Reverso Traefik
Após criar o serviço MySQL, criaremos e configuraremos o contêiner do proxy reverso traefik.
Antes de editar o script ‘docker-compose.yml’, precisamos criar uma nova configuração do traefik chamada ‘traefik.toml’.
vim traefik.tomlCole a configuração da regra do traefik abaixo.
#Configuração Global do Traefik
debug = false
checkNewVersion = true
logLevel = "ERROR"
#Defina o EntryPoint para HTTP e HTTPS
defaultEntryPoints = ["https","http"]
#Defina a porta HTTP 80 e
#Porta HTTPS 443 EntryPoint
#Habilitar redirecionamento automático de HTTP para HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
#Habilitar o Painel do Traefik na porta 8080
#com método de autenticação básica
#hakase e senha
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
users = [
"hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
]
[api]
entrypoint="dash"
dashboard = true
#Habilitar reenvio de solicitação se houver erro de rede
[retry]
#Definir Configuração de Backend do Docker
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false
#Registro do Letsencrypt
#Defina o desafio HTTP ACME do Letsencrypt
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[acme.httpChallenge]
entryPoint = "http"Salve e saia.
Agora precisamos criar um novo arquivo para a configuração SSL Letsencrypt ‘acme.json’. Ele é usado para armazenar todos os logs gerados pelo letsencrypt.
Crie o arquivo ‘acme.json’ em branco e altere a permissão para 600.
touch acme.json
chmod 600 acme.jsonEm seguida, editaremos o script ‘docker-compose.yml’ e adicionaremos a configuração do serviço traefik.
- Usaremos a imagem docker mais recente do traefik.
- O contêiner será nomeado como ‘traefik’
- Ele usará a rede personalizada ‘traefiknet’ e exporá as portas HTTP e HTTPS.
- Montar o arquivo sock do docker e a configuração do traefik ‘traefik.toml’ e ‘acme.json’
- Definimos a URL do painel do traefik e o backend através dos rótulos do docker.
Edite o ‘docker-compose.yml’.
vim docker-compose.ymlCole a configuração do serviço traefik abaixo.
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: alwaysSalve e saia.
Criar e Configurar o Serviço Ghost
Após configurar o proxy reverso traefik, criaremos a configuração do serviço principal do ghost.
Detalhes da configuração que queremos criar.
- Usaremos o ghost v1 e a pequena versão alpine do docker.
- Montaremos o diretório de conteúdo do ghost no diretório local chamado ‘blog’.
- O serviço ghost será executado na porta padrão com o nome de domínio ‘gho.hakase-labs.io’, a configuração através dos rótulos do docker.
- O serviço ghost usará duas redes do docker, internal e traefiknet.
- Estamos configurando os detalhes do banco de dados MySQL a partir da configuração do contêiner mysql.
- E o ghost será iniciado quando o contêiner traefik e MySQL estiverem em execução.
Crie um novo diretório chamado ‘blog’ e edite o arquivo ‘docker-compose.yml’.
mkdir -p blog/
vim docker-compose.ymlCole a configuração abaixo.
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: falseSalve e saia.

E agora temos todos os diretórios e configurações conforme mostrado abaixo.
tree
Passo 5 - Implantar o Ghost com MySQL e Traefik
Para construir e executar todos os nossos serviços da pilha ghost, podemos usar o comando abaixo.
docker-compose up -d
Quando estiver completo, verifique todos os serviços em execução.
docker-compose psE o seguinte é o resultado.
Se você tiver um erro, verifique o log do contêiner usando os comandos abaixo.
docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost
A pilha ghost com MySQL e o proxy reverso Traefik está em execução.
Passo 6 - Testes
Abra o painel do Traefik com sua URL, a minha é http://traef.hakase-labs.io/
Faça login com o usuário e a senha no arquivo ‘traefik.toml’.
E a seguir está o painel do Traefik.

Para a instalação do Ghost, digite a URL do ghost na barra de endereços, a minha é http://gho.hakase-labs.io/
E você verá a página inicial do ghost.

Agora visite a página de administração para configurar e criar um novo usuário administrador. Minha URL é: http://gho.hakase-labs.io/admin/
Clique no botão verde para criar um novo usuário administrador.

Digite os detalhes do usuário, senha, e-mail e clique novamente no botão verde.

Para convidar um novo membro ou usuário, clique no link ‘Farei isso mais tarde..’.

Agora você verá o Painel do Ghost.

E após criar a postagem de exemplo, o seguinte é o resultado.

A instalação do blog Ghost com banco de dados MySQL e Proxy Reverso Traefik no ambiente Docker foi concluída com sucesso.
Referências
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.