Deploy de aplicação NodeJS via integração com GitHub

O objetivo desse post é ensinar maneiras de fazer o deploy por GitHub da sua aplicação!

Motivo

Git Remote é o único método de deploy onde é executado o npm install. E consequentemente quaisquer ações que desencadeiam dele. Como o script postinstall, por exemplo.
Pessoalmente, eu recomendo utilizar esse método se possível.
Caso você preferir a integração com o GitHub, uma dessas opções a seguir poderá lhe ajudar!

Cuidados

  • O package.json precisa ficar na raiz da hospedagem. Então no seu repositório, o package.json também precisa estar na raiz. Algo assim:

Pois é lá que ele será procurado para receber instruções de como iniciar a aplicação. Se estiver em uma subpasta, não irá funcionar. Os logs da aplicação ficarão assim:

image

Conectando

Após conectar o GitHub com a Umbler, você terá a opção de escolher qual dos seus repositórios você deseja clonar e o diretório

Mantenha o diretório na raiz /

Clique em Salvar

Agora, faça um deploy manualmente.

Após isso, seu repositório foi clonado e já está disponível nos arquivos do site

Note que não existe a pasta node_modules. As dependências não são baixadas automaticamente. Essa feature é exclusiva do deploy via Git Remote. Note que os logs da aplicação vão reclamar que haverá módulos não encontrados

Como instalar as dependências

Há vários métodos onde você pode instalar as suas dependências. Abaixo alguns exemplos, ordenados por melhor maneira, até menos melhor maneira :stuck_out_tongue:

Enviar a node_modules por FTP

  1. Vá em Deploy e selecione FTPS

image

  1. Copie os dados mostrados para um cliente como o FileZilla ou outro software de sua preferência

  1. Copie a node_modules para a raiz

  1. Depois de copiar, reinicie a aplicação

image

Funcionando!

Versionar a node_modules

  1. Remova a node_modules do arquivo .gitignore

image

  1. Envie novamente para o GitHub

Ao versionar a node_modules, ela já vai ser copiada para a hospedagem junto com os outros arquivos. Essa solução é válida, mas pode ser um pouco inconveniente dependendo do tamanho da sua node_modules.

Conectar por SSH e rodar npm install

  1. Primeiro, configure a sua conexão por SSH

  2. Tente conectar

Se ocorrer o erro Connection closed by remote host é porque o container está offline. Provavelmente devido a aplicação não ter iniciado ou terminado com erro. Mais detalhes do porquê isso acontece e como resolver nesse meu outro post

  1. Execute o comando npm install

  1. Reinicie a sua aplicação

image

Funcionando!