Fala Dev's, beleza? Neste tutorial venho mostrar a vocês como vocês podem fazer o deploy da sua aplicação fullstack utilizando serviços como Heroku e Netlify. Além disso você ainda vai poder conectar a um banco de dados real em Postgres.
Importante Somente siga as instruções abaixo se já estiver com o projeto totalmente pronto e testado.
- Crie a sua conta no heroku, caso não possua.
- Clique em Create new app para criar a sua aplicação
- Escolha um nome e crie.
- Agora você deve baixar o Heroku CLI, que serve para você fazer o deploy através do terminal.
- Feche o seu terminal caso esteja aberto e abra o novamente.
- Faça o login no heroku através do comando
$ heroku login
AVISO: Caso ele seja exibido uma mensagem no terminal que não reconhece o comando "heroku", instale ele novamente ou tente reiniciar o seu computador.
-
Abra uma aba nova no seu terminal (em qualquer caminho) e rode
$ heroku addons:create heroku-postgresql:hobby-dev --app <nome-do-app>
Troque onde está escrito
nome-do-app
pelo nome que você colocou no heroku quando criou. No meu caso seriabethehero-api
-
Para saber informações como : senha e usuário do banco de dados, execute:
$ heroku pg:credentials DATABASE --app <nome-do-app>
Lembrando novamente que nome-do-app é onde você digita o nome do seu app no heroku.
As suas credenciais irão aparecer algo do tipo
Connection info string:
"dbname=dee932clc3mg8h host=ec2-123-73-145-214.compute-1.amazonaws.com port=6212 user=user3121 password=98kd8a9 sslmode=require"
Guarde os valores após o igual pois será necessário na configuração das variáveis do Postgres.
- A configuração abaixo espera que você esteja utilizando o Knex como Query Builder.
IMPORTANTE : Antes de tudo, crie uma nova branch para o deploy. Assim você não perde as alterações que já fez. Não publique esse branch no seu github/gitlab.
git checkout -b deploy
Abra o terminal e instale os seguintes pacotes
$ yarn add dotenv pg
ou
$ npm i dotenv pg
-
Acesse pasta
src
pelo vscode e cria a pastaconfig
-
Dentro dessa pasta crie 2 arquivos:
index.js
e.env
(sim com o ponto na frente) -
Abra o arquivo do seu servidor (seja app.js e server.js) e altere a porta para
-
Abra o arquivo
.env
e configure as variaveis abaixo com as suas credenciais do postgres4.1 Caso não lembre, rode o comando
heroku pg:credentials DATABASE --app <nome-do-app>
no terminal4.2 Um EXEMPLO de como preencher
"dbname=dee932clc3mg8h host=ec2-123-73-145-214.compute-1.amazonaws.com port=6212 user=user3121 password=98kd8a9 sslmode=require"
- Agora vá no seu arquivo
connection.js
e altere o seu código para o seguinte - Por último abra o arquivo do knex
knexfile.js
e faça as alterações seguintes.
- Na raiz do seu projeto backend, crie um arquivo chamado
Procfile
dessa forma, sem extensões. neste arquivo insira o conteúdo seguinte:
web: node src/server.js
ou
web: node src/index.js
- Crie o arquivo .gitignore na raiz do teu backend, caso não tenha feito ainda, e insira
node_modules
.DS_Store
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
Lembrando que isso está sendo feito no branch deploy, no master você deveria incluir o arquivo .env
- Crie um repositório na raiz do projeto
- Rode os comandos
$ heroku git:remote -a <nome-do-app>
$ git add backend
$ git commit -am "Let's rock it!🔥🚀"
$ git push heroku deploy:master
Estou supondo que você incluiu o frontend e backend no mesmo repositório
$ heroku git:remote -a <nome-do-app>
$ git add backend
ou
$ git add .
$ git commit -am "Let's rock it!🔥🚀"
Caso tenha criado um branch separado para deploy, faça
git subtree split --prefix backend deploy
copie o código e cole
$ git push heroku <codigo_do_split>:master --force
Caso não, apenas execute:
$ git subtree push --prefix backend heroku master
Agora vamos rodar a migração!
- Abra o terminal novamente e rode o comando
$ heroku run knex migrate:latest
Agora chegou a hora!!! vamos testar Coloque a URL da sua aplicação no insomnia e teste.
#PartiuReact
- Crie a sua conta no netlify (caso não possua): clique aqui.
Na pasta raiz do projeto frontend
- crie o arquivo
.env
e insira:
REACT_APP_API_URL=<url_da_sua_api_heroku>
A sua url vai ser algo como https://algumacoisa.herokuapp.com
- Abra o arquivo
api.js
da sua pastaservices
e altere para o seguinte
- Abra uma aba no seu terminal, acesse a pasta do frontend e rode
$ yarn build
ou
$ npm run build
- Abra uma guia no seu navegador e acesse o site Netlify Drop
- Abra a pasta do seu projeto frontend no explorer, e arraste a pasta build para o Netlify Drop
O deploy automático do netlify será iniciado, magic is happening! E VOILÁ!!!
O domínio da sua aplicação será algum-nome-estranho.netlify.com
mas você pode alterar isso indo em
- Clique em
Domain Settings
- Em custom domains clique em
Options
- Vá em
Edit site name
- Digite o nome que quiser e clique em
Save
É isso! com isso finalizamos, o deploy de um projeto fullstack, utilizando Heroku + PostgreSQL + Netlify
Passo adicional:
Para obter a contagem de registros no postgres abra o seu controller e faça as alterações seguintes