O Ghost é uma plataforma popular de criação de conteúdo escrita em JavaScript com Node.js. O software de código aberto vem com tudo o que você precisa para criar, tema, publicar e manter seu próprio blog.
O Ghost é um software de código aberto suportado pelo serviço hospedado oficial do Ghost(Pro). Você pode instalá-lo em seu próprio servidor adicionando Node.js e usando a CLI do Ghost para configurar sua pilha. O Ghost também está disponível como uma imagem do Docker que agrupa todas as dependências para você.
Neste guia, usaremos o Docker para obter rapidamente um novo blog do Ghost operacional. Instale o Docker e o Docker Compose em seu host antes de prosseguir. Embora você possa implantar o Ghost usando apenas o Docker, o Compose simplifica o fornecimento e o gerenciamento dos valores de configuração que seu site precisará para começar.
Iniciando um contêiner fantasma
Você pode iniciar um site básico do Ghost com um único comando do Docker:
docker run -d -p 2368:2368 --name simple-ghost ghost:4
Isso abrirá o Ghost em sua porta padrão de 2368. Visite http://localhost:2368
para visualizar seu site ou http://localhost:2368/ghost
para acessar o painel de administração do Ghost. Você precisará fornecer algumas configurações de primeira execução para finalizar a instalação do Ghost e criar uma conta de usuário inicial.
Essa abordagem é ótima para experimentação rápida se você estiver apenas testando o Ghost. No entanto, ainda não configuramos o armazenamento persistente para que seus dados sejam perdidos quando o contêiner parar.
Aqui está um exemplo mais completo que usa o Docker Compose para configurar o Ghost com um volume do Docker. Monte um volume no /var/lib/ghost/content
diretório para armazenar os dados do Ghost fora do contêiner.
version: "3" services: ghost: image: ghost:4 ports: - 8080:2368 environment: url: https://ghost.example.com volumes: - ghost:/var/lib/ghost/content restart: unless-stopped volumes: ghost:
Este arquivo Compose exibe algumas outras alterações na configuração do contêiner. A porta 2368 exposta pelo contêiner é mapeada para a porta 8080 em seu host, permitindo que você use localhost:8080
para acessar o Fantasma. A política de reinicialização é alterada para unless-stopped
para garantir que seu site apareça automaticamente após a reinicialização do host.
Agora use o Compose para abrir seu site:
docker-compose up -d
Configurando o Ghost
O Ghost oferece suporte a vários parâmetros de configuração para personalizar sua operação e configurar seu site. Ao usar o Docker, você pode fornecer esses valores como variáveis de ambiente.
Os arquivos de configuração do Ghost usam objetos JSON aninhados para armazenar valores. Você pode converter chaves JSON em suas contrapartes de variáveis de ambiente substituindo cada nível de árvore por __
(duplo sublinhado) caracteres:
# in a JSON config file { "mail": { "transport": "SMTP" } } # as an environment variable mail__transport=SMTP
Use o environment
campo em seu docker-compose.yml
para fornecer esses parâmetros ao seu contêiner do Ghost:
version: "3" services: ghost: environment: mail__transport: SMTP
Consulte a documentação do Ghost para obter uma lista completa de opções com suporte. Você pode configurar um sistema de e-mail, usar uma URL separada para acessar o painel de administração, substituir os caminhos do diretório e alternar as opções de privacidade por meio das variáveis de ambiente disponíveis.
O url
A opção é particularmente importante, pois é necessária para sites de produção ao vivo. Isso define a URL que os visitantes externos usarão para acessar seu site. Defina isso para o nome de domínio do seu site em seu docker-compose.yml
:
environment: url: https://ghost.example.com
Usando um banco de dados externo
O padrão do Ghost é usar um banco de dados SQLite armazenado como um arquivo no diretório de conteúdo do seu site. Ele será persistido como parte do volume do Docker criado acima. Você pode usar um banco de dados MySQL externo fornecendo detalhes de conexão via database
-variáveis de ambiente prefixadas:
services: ghost: # ... environment: database__client: mysql database__connection__host: ghost_mysql database__connection__user: root database__connection__password: databasePw database__connection__database: ghost ghost_mysql: image: mysql:5.7 expose: - 3306 environment: MYSQL_DATABASE: ghost MYSQL_ROOT_PASSWORD: databasePw volumes: - mysql:/var/lib/mysql restart: unless-stopped volumes: mysql:
Este arquivo Compose inclui outro serviço que executa o MySQL em um contêiner adicional. As variáveis de ambiente são definidas no serviço Ghost para fornecer os detalhes da conexão do MySQL. Uma separação mysql
volume é criado para persistir os arquivos de armazenamento do banco de dados.
O Compose vincula automaticamente os serviços a uma rede do Docker. Fantasma pode alcançar o ghost_mysql
container usando o nome do serviço como um nome de host. Se você quiser usar um banco de dados MySQL não Dockerizado existente, você pode remover o ghost_mysql
definição de serviço e forneça o endereço IP do servidor MySQL, o nome do esquema do banco de dados e as credenciais do usuário.
Proxy de tráfego para seu contêiner
Agora, seu site do Ghost deve estar operacional, mas ainda está exposto na porta 8080. Se você não estiver executando mais nada em seu host, poderá vincular a porta 80 ou 443 para torná-la acessível diretamente pelo nome de domínio do seu servidor. Em outras situações, use um proxy reverso, como o NGINX, para encaminhar o tráfego da Web para o contêiner do Ghost.
Adicione NGINX ao seu host:
sudo apt update sudo apt install nginx # Allow HTTP/HTTPS traffic through the firewall sudo ufw allow 80 sudo ufw allow 443
Defina um host NGINX para seu site em /etc/nginx/sites-available/ghost.example.com
:
server { server_name ghost.example.com; index index.html; access_log /var/log/nginx/ghost_access.log error_log /var/log/nginx/ghost_error.log error; location / { proxy_pass http://127.0.0.1:8080; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Original-IP $remote_addr; } }
Este arquivo configura o NGINX para encaminhar o tráfego para ghost.example.com
através da porta 8080 em localhost
, que estava anteriormente vinculado ao seu contêiner do Ghost. Habilite o novo arquivo de configuração vinculando-o ao NGINX sites-enabled
diretório:
sudo ln -s /etc/nginx/sites-available/ghost.example.com /etc/nginx/sites-enabled/ghost.example.com
Reinicie o NGINX para aplicar suas alterações:
sudo service nginx restart
Agora você pode configurar o SSL com o serviço gratuito Let’s Encrypt. Adicione o Certbot da Let’s Encrypt para automatizar a emissão e renovação de certificados:
sudo apt install certbot
Use o Certbot para obter certificados para seu site NGINX:
sudo certbot --nginx
O Certbot lerá seus sites NGINX e gerará certificados para seus server_name
campos de configuração. Ele reconfigurará automaticamente o NGINX para servir o certificado com seu site. Agora você deve conseguir acessar seu blog do Ghost visitando seu nome de domínio por HTTPS.
Embora tenhamos focado no NGINX neste artigo, existem outras opções para fazer proxy do tráfego da Web para o contêiner do Ghost. Traefik é um concorrente líder que tem suporte de primeira classe para o Docker. A implantação de uma instância do Traefik permitiria configurar roteamento e SSL automático por meio de rótulos do Docker que você definiria em seu contêiner do Ghost.
Gerenciando atualizações do Ghost
Você pode atualizar o Ghost substituindo o contêiner do Docker do seu site por um novo executando uma versão atualizada da imagem do Ghost. Como o conteúdo do seu site é armazenado com segurança em um volume separado do Docker, ele será retido quando o volume for reanexado ao novo contêiner.
Se você estiver marcando uma versão de imagem principal em seu docker-compose.yml
, como ghost:4
, você pode atualizar para a versão secundária mais recente executando docker-compose up
com o --pull
bandeira:
docker-compose up -d --pull
Isso instrui o Compose a verificar alterações na tag de imagem e extrair uma versão atualizada quando disponível. Ele substituirá seus contêineres por novas instâncias usando a versão de imagem mais recente que corresponda à tag.
Quando você quiser alterar a tag que está usando, atualize a image
referência em seu docker-compose.yml
Arquivo. Repita docker-compose up -d
para extrair a imagem e iniciar novos contêineres. Por exemplo, se o Ghost v5 for lançado no futuro, você poderá alterar seu docker-compose.yml
para image: ghost:5
para passar para a nova versão principal.
O Docker facilita a obtenção de atualizações do Ghost extraindo a imagem mais recente e substituindo seus contêineres. No entanto, você ainda deve prestar atenção às alterações que está aplicando. Consulte o log de alterações do Ghost antes de fazer uma atualização importante, caso precise executar etapas extras para concluir a migração.
Usando ghost-cli
ghost-cli
está disponível na imagem do Ghost Docker. Esse utilitário é usado para configurar e manter o Ghost quando ele é instalado em ambientes tradicionais sem contêineres.
Você pode acessar ghost-cli
através do Docker usando o ghost
comando com docker exec
. Aqui está um exemplo que usa o version
subcomando para revelar a versão do Ghost que você está usando:
docker exec -it my-ghost-container ghost version
Embora muitos ghost-cli
componentes funcionarão, alguns não são suportados em ambientes Dockerizados. Comandos como install
, setup
, update
, e uninstall
estão quebrados, sem sentido ou contrários às práticas recomendadas quando usados com a imagem do Docker do Ghost. O Ghost e todas as suas dependências são incorporadas à imagem e não precisam ser “instaladas”; as atualizações devem ser aplicadas iniciando um novo contêiner, conforme mostrado acima.
Resumo
O Ghost é uma plataforma de blog moderna que oferece um painel limpo, recursos avançados de criação de conteúdo e suporte avançado a temas e personalização. Usar o Docker para hospedar o Ghost simplifica o procedimento de configuração, reduz o número de pacotes de SO necessários e ajuda a tornar seu site mais portátil entre ambientes.
Quando seu blog Dockerized estiver operacional, use a documentação de desenvolvimento padrão do Ghost para gerenciar seu site e seu conteúdo. Você pode configurar associações, boletins informativos, temas personalizados e integrações de API usando os recursos integrados da plataforma.
0 Comments