No último artigo aprendemos a criar uma API usando Adonis JS e PostgreSQL. Você pode acessar esse conteúdo clicando aqui.
Mas, como podemos realizar o deploy desse projeto e disponibilizá-lo publicamente? É o que iremos fazer neste artigo. Iremos realizar o deploy dessa API no Heroku, uma plataforma de serviços em nuvem bem conhecida, usada para hospedar aplicações Web.
Ele oferece muitas vantagens, como um plano gratuito para hospedar nossos projetos. Além disso, ele possui integração com o GitHub, o que facilita bastante o processo de deploy.
Antes de iniciar a configuração do Heroku, vamos precisar realizar algumas adaptações em nosso projeto.
Configurações adicionais em nosso código
A primeira mudança que iremos realizar será no arquivo package.json. Iremos mudar o script de “start”. Isso é necessário pois será esse script que o Heroku irá executar para iniciar nosso projeto. Ele ficará assim:
"start": "ENV_SILENT=true node server.js"
Explicando: uma das configurações primordiais para o bom funcionamento de nossa aplicação Adonis JS são as variáveis de ambiente. Essas variáveis são definidas no arquivo .env. Contudo, esse arquivo não será adicionado ao nosso GitHub. Logo, o Adonis não conseguirá encontrar tais variáveis e retornará um erro. Para evitar que isso ocorra, nós definimos ENV_SILENT como true, para que as variáveis sejam ignoradas e seja levado em conta as credenciais que iremos definir no Heroku daqui a pouco.
O próximo recurso que iremos adicionar ao nosso código é o arquivo “Procfile”. Ele é o arquivo para as configurações do Heroku e define os comandos que serão executados quando nosso servidor iniciar.
Ele ficará na raiz e possuirá o seguinte conteúdo:
release: ENV_SILENT=true node ace migration:run --force
web: ENV_SILENT=true npm start
Com esses recursos adicionados ao nosso projeto, estamos prontos para iniciar nosso projeto no Heroku.
Iniciando configuração no Heroku
Para configurar o nosso projeto, é necessário que tenhamos uma conta criada no Heroku. Daí poderemos acessar a página de console e clicar no botão “New” > “Create new app”:
Na próxima página vamos dar um nome para nosso projeto e clicar em “Create app”:
A página inicial do projeto será a seguinte:
A primeira configuração que iremos realizar é instalar o serviço do PostgreSQL em nosso servidor, para que o Adonis possa acessar o Banco de Dados e realizar todas as operações que criamos no último artigo.
Para isso, vamos clicar na segunda opção do menu principal, “Resources”.
Na página a seguir, veremos uma área para os Add-ons de nosso projeto. Eles são como recursos externos, que são necessários para nosso projeto funcionar corretamente.
Iremos clicar na opção “Find more add-ons”:
Na página seguinte iremos clicar no Add-on “Heroku Postgres”:
Nós seremos redirecionados para a página deste Add-on. Iremos clicar no botão “Install Heroku Postgres”:
Para concluir a instalação, iremos preencher o nome de nosso projeto do Heroku no campo input que irá aparecer na página seguinte e então clicar em “Provision add-on”:
Seremos redirecionados para a página de Visão Geral do nosso Banco de Dados. Iremos clicar no nome dele e abrir suas informações em uma nova aba:
Essa página irá nos mostrar alguns dados a respeito de nosso Banco de Dados. Iremos clicar na opção Settings:
Nessa próxima aba iremos clicar na opção “View Credentials...”:
As credenciais serão exibidas para nós. Elas irão variar de uma conta no Heroku para outra:
Agora que sabemos as credenciais, iremos adicioná-las às variáveis de ambiente de nosso projeto no Heroku. Para isso, vamos voltar à página inicial de nosso projeto e clicar em “Settings”:
Iremos clicar na opção “Reveal Config Vars”, que são as nossas variáveis de ambiente:
Agora iremos adicionar as credenciais de nossa aplicação ao Heroku de fato. A primeira configuração é o APP_KEY, que podemos encontrar no arquivo .env de nossa API:
Essa informação também irá variar de uma aplicação para outra. Iremos copiar essa informação e adicioná-la ao Heroku, sempre com o padrão de chave e valor:
Perceba que seguimos o padrão de o nome da configuração estar em letras maiúsculas. Isso se repetirá para as outras configurações. Iremos adicionar também as variáveis de ambiente DB_CONNECTION, DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE e DB_PORT. Nossas variáveis de ambiente ficarão assim:
Com as configurações finalizadas, chegou a hora de conectar nosso projeto ao GitHub. Para isso, iremos criar um repositório no GitHub e então realizar a conexão entre esses dois servidores.
Para realizar essa conexão, vamos selecionar a terceira opção do nosso menu principal, o link de “Deploy”. Daí, vamos selecionar a opção de conectar com o GitHub:
Após realizar a conexão, precisamos saber o nome de nosso repositório no GitHub, que pode ser encontrado até mesmo na URL de nosso navegador:
Iremos digitar esse nome no campo de busca do Heroku e então clicar em “Search”:
O nosso repositório será exibido e então clicaremos em “Connect”:
Algumas opções serão exibidas. Se desejar, poderá clicar no botão “Enable Automatic Deploys”. Assim, sempre que realizarmos uma atualização em nosso GitHub, ela será automaticamente adicionada ao Heroku:
Contudo, agora iremos realizar o deploy de maneira manual. Para isso, iremos clicar no botão “Deploy Branch”, que estará perto do fim da página:
Neste momento nossas migrations serão executadas no Heroku e o deploy será de fato realizado.
Ao fim do processo, veremos uma mensagem de sucesso, informando que nossa aplicação já está disponível para ser acessada:
Clicando em “View” seremos direcionados para nossa API em produção.
Da primeira vez talvez não vejamos nenhum dado, pois nossa API estará iniciando na nuvem. Podemos adicionar algumas informações por meio do Insomnia, informando a URL de nossa API:
Agora, ao acessar a rota que lista todos os cursos em nossa API no navegador, veremos o seguinte resultado:
Excelente, nossa API está funcionando, agora em produção!
Conclusão
Neste artigo vimos como podemos realizar o deploy de uma API em Adonis JS no Heroku. Se você possui algum projeto pessoal e deseja adicioná-lo à produção, o Heroku é uma excelente opção.
Se desejar, você pode conferir esse mesmo conteúdo em vídeo em nosso canal no YouTube.
Você pode enviar sugestões de temas para o nosso Blog clicando aqui.
Esperamos que tenha gostado do conteúdo e até o próximo artigo :)