Aqui vamos mostrar como instalar um Ghost via Docker em poucos minutos.
PreReq
- Ubuntu >= 18.04
- Docker >= 19
- Ghost
- Sqlite3
Instalando Docker
Vamos instalar o docker com o script fornecido pelo projeto
curl -fsSL https://get.docker.com -o get-docker.sh
Saída esperada
# Executing docker install script, commit: 442e66405c304fa92af8aadaa1d9b31bf4b0ad94
+ sh -c 'apt-get update -qq >/dev/null'
+ sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null'
+ sh -c 'curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null'
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sh -c 'echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" > /etc/apt/sources.list.d/docker.list'
+ sh -c 'apt-get update -qq >/dev/null'
+ '[' -n '' ']'
+ sh -c 'apt-get install -y -qq --no-install-recommends docker-ce >/dev/null'
+ sh -c 'docker version'
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b7f0
Built: Wed Mar 11 01:25:46 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b7f0
Built: Wed Mar 11 01:24:19 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
sudo usermod -aG docker your-user
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run
containers which can be used to obtain root privileges on the
docker host.
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
for more information.
Pronto docker instalado, agora vamos ativar no boot
systemctl enable docker
Feito, agora vamos iniciar o serviço do docker
systemctl start docker
Assista o vídeo
Instalando Ghost
Crie um diretório para servir de volume para mysql e ghost.
mkdir -p /srv/sites/guto/ghost/content
mkdir -p /srv/sites/guto/ghost/config
Crie o arquivo config.json em ghost/config
{
"server": {
"port": 2368,
"host": "0.0.0.0"
},
"database": {
"client": "sqlite3",
"connection": {
"filename": "/var/lib/ghost/content/data/ghost.db"
}
},
"mail": {
"transport": "Direct"
},
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/var/lib/ghost/content"
}
}
Execute o comando abaixo
docker run --restart always --name guto-ghost -v /srv/sites/guto/ghost/content:/var/lib/ghost/content:z -v /srv/sites/guto/ghost/config/config.json:/var/lib/ghost/config.production.json:z -d -p 80:80 ghost:latest
E pronto, acesse seu ghost pelo navegador e finalize a instalação :)
http://coloque-seu-ip-aqui/
Assista o vídeo
Dicas soltas
Caso queira reiniciar o container
docker restart guto-ghost
Caso queria parar o container
docker kill guto-ghost
Caso queira ver o log do container
docker logs -f guto-ghost
Caso queria entrar no container
docker exec -ti guto-ghost bash
Amarrando as pontas
Instalar qualquer coisa via docker é muito fácil, especialmente quando você quer testar algo ou conhecer alguma tecnologia.
Neste cenário criamos um ambiente ghost composto por 1 container com a aplicação rodando internamente o banco SQLite3. O container persiste os dados em disco, no HOST, utilizando o diretório /srv/sites/guto/ghost.
Observe que eu monto um volume para os dados e outro volume para o arquivo de configuração, assim fica fácil alterar qualquer coisa e reiniciar o container em seguida.
Com a persistência de dados você pode reiniciar o seu containers e não perderá seus dados.
Vale lembrar que o projeto GHOST recomenda o uso do MySQL em produção, SQLite só deve ser utilizado em desenvolvimento ou se você sabe o que está fazendo.
Usar docker em produção requer alguns cuidados além deste, como o uso de um orquestrador mais eficiente que ofereça alta disponibilidade, resiliência, escalabilidade e persistência, além de claro, um sólido plano de backup dos dados além de um procedimento bem claro para Disaster Recovery.
Precisa de ajuda para trabalhar com DOCKER ou migrar suas APPs para Docker?A JAC te ajuda!
A JAC é nosso braço de projetos e consultoria, entre em contato :)