O Básico - Deploy com Heroku
Tags: beginners, webdev, heroku, braziliandevs
Published: 2022-05-04 20:57:33

## Tabela de Conteúdos

- [Heroku](#heroku)
- [Heroku CLI](#heroku-cli)
- [Deploy com Heroku](#deploy-com-heroku-cli)
- [Links Úteis](#links-úteis)

---

## Heroku

### O que é?

É uma plataforma que facilita o processo de deploy das aplicações, sejam elas Front-end ou Back-end, de forma mais técnica podemos categorizar o Heroku como um PaaS _(Platform as a Service)_.

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

---

## Iniciando com Heroku

Como vamos enviar nossas aplicações para produção em uma plataforma externa, precisamos realizar algumas configurações para aumentar a segurança de nosso projeto, bem como permitir que plataformas como o Heroku o _"buildem"_ e o executem da forma correta.

### Variáveis de ambiente

A primeira configuração que iremos fazer é a definição de variáveis de ambiente contendo informações sensíveis como credenciais do Banco de Dados, por exemplo.

``` bash
PORT=3001
DB_USER=admin
DB_PASSWORD=admin
```

*Obs: _Precisamos sempre definir a porta da aplicação como uma variável de ambiente, isso porque será o Heroku quem irá controlar quais portas serão expostas_.

### Definição de scripts

Além das variáveis de ambiente também precisamos definir os _scripts_ a serem executados para a construção _(build)_ e execução da aplicação.

O Heroku irá executar diferentes scripts dependendo da linguagem/framework utilizado, no caso de projetos em Node, o script padrão a ser executado é o `start`.

``` json
// package.json

{
  "scripts": {
    "start": "node index.js"
  }
}
```

### Adaptação dos projetos

Por vezes será necessário realizar algumas alterações nos projetos para que eles possam _"subir para produção"_ no Heroku sem problemas, as principais alterações são relacionadas a conexão.

A mais simples dessas alterações é em relação a porta da aplicação, devemos sempre definir a porta através das variáveis ambiente, pois como dito anteriormente será o Heroku a controlar essas portas.

Podemos citar outras adaptações, também relacionadas a variáveis de ambiente, como a conexão com um DB, a chave de uma API, entre outros dados sensíveis ou que alteram dependendo do ambiente.

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

---

## Heroku-CLI

### O que é?

É uma ferramenta de linha de comando para o gerenciamento de projetos no Heroku.

*_Sua instalação é opcional, pois existem outras formas de gerenciar esses projetos, porém aqui iremos focar no Heroku-CLI_.

### O que faz?

Realiza o gerenciamento completo de aplicações no Heroku, desde sua criação, monitoramento até sua deleção.

### Instalação

Não iremos abordar o passo-a-passo nesse artigo, mas segue a [documentação](https://devcenter.heroku.com/articles/heroku-cli#install-the-heroku-cli) para consultas.

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

---

## Deploy com Heroku-CLI

### O que é?

É o ato de enviarmos nossa aplicação para a plataforma da Heroku para que ela esteja disponível para a internet.

### Como fazer?

Antes de começarmos o Deploy é necessário já ter realizado todas as configurações e ajustes necessários em nosso projeto, bem como já ter o Heroku-CLI instalado.

- __Criar repositório Heroku__

O primeiro passo é criar um repositório remoto na Heroku, para isso basta executar o seguinte comando.

``` bash
heroku create <nome do repositório na Heroku> --remote <nome do repositório no git>
```

``` bash
heroku create my-first-deploy-12456 --remote heroku-origin
```

*Obs: _O `<nome do repositório no git>` é o nome pelo qual iremos referenciar o repositório em questão através da linha de comando, no exemplo acima referenciaríamos da seguinte forma `git push heroku-origin main`_.

**Obs: _Por vezes o nome do repositório que você deseja criar já pode estar sendo utilizado, então utilizamos alguns números aleatórios ao final, por isso o `12356` no exemplo acima_.

- __Fazer o `push`__

Com o repositório criado na Heroku, tudo que precisamos fazer é realizar um `push`, referenciando esse repositório remoto.

``` bash
git push <referência ao repositório> <branch>
```

``` bash
git push heroku-orgin main
```

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

---

## Links Úteis

- [Heroku-CLI Commands](https://devcenter.heroku.com/articles/heroku-cli-commands)
- [Deploy com GIT](https://devcenter.heroku.com/articles/git)
- [Node.js no Heroku](https://devcenter.heroku.com/categories/nodejs-support)