Como implantar um blog do Ghost com o Docker


0

Logo da plataforma de criação de conteúdo Ghost

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.

Propaganda

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
Propaganda

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;
    }

}
Propaganda

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
Propaganda

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.

Propaganda

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.


Like it? Share with your friends!

0

0 Comments

Your email address will not be published. Required fields are marked *