Saltar para o conteúdo

Subindo uma aplicação monolítica na Heroku

fevereiro 25, 2025

Note

Este artigo foi baseado em experiências práticas de configuração e deploy de aplicações na Heroku. Informações sensíveis foram removidas ou adaptadas.

Introdução

Projetos monolíticos, nos quais frontend e backend coexistem na mesma aplicação, ainda são bastante comuns. Durante algumas implantações na Heroku, percebi que o processo se repetia com frequência, então decidi reunir os principais passos neste cheat sheet.

Important

Esse documento serve apenas para termos uma base, cada projeto possui suas particularidades

Etapas

Configuração inicial na Heroku

  • Sabendo da demanda, criei um novo App na Heroku
  • Após ter o ambiente criado, e as variáveis do ambiente para o mesmo em mãos, as configurei indo em settings > config vars > Reveal Config Vars . Adquira as variáveis com o desenvolvedor responsável pelo projeto ou com outra pessoa envolvida que as possua.
  • Configurei os buildpacks do projeto indo em settings > Buildpacks > Add buildpack , neste caso foram necessários php e node/js respectivamente
  • clonei o repositório do projeto que está no gitlab em minha máquina
git clone git@gitlab.com:seu-usuario/sua-aplicacao.git
  • Fiz login na Heroku via CLI

  • criei um repositório vazio e ‘vinculei’ ele à esse meu app na Heroku

mkdir my-project
cd my-project/
git init
heroku git:remote -a <nome do app na Heroku>
  • Após criar esse repositório, copiei os arquivos do respositório do gitlab na pasta da heroku ignorando certas pastas e arquivos, como .git, .gitlab, entre outros

  • Criei arquivo Procfile na pasta da Heroku e adicionei algumas configurações que o projeto necessita

web: vendor/bin/heroku-php-apache2 public/
release: php artisan migrate --force #automatizar a atualização do banco
  • Após isso, adicionei as mudanças e subi o projeto na Heroku
git add .
git commit -m "Counter Strike > Valorant"
git push heroku master

Note

Originalmente, adicionei nessa parte da documentação algumas configurações de Banco específicas para o projeto usado como base para o tutorial, removi esse trecho pois não é necessário para o seu propósito principal

Vinculando o ‘auto-deploy’ com o Gitlab

Agora que sua aplicação já está na Heroku, uma boa prática é vincular esse ambiente com o Gitlab, não sendo mais preciso subir as mudanças para a Heroku de forma manual

  • Acesse a pasta do projeto que se encontra no Gitlab
  • No menu à esquerda, acesse settings > CI/CD
  • Encontre a opção/área de Variables. Note que existem 2 possíveis campos para você adicionar variáveis, selecione a primeira

landscape
Adicionar nova variável CI/CD

Desative a opção Protect variable sempre que adicionar uma nova variável

Inicialmente, configure as seguinte variáveis:

  1. HEROKU_API_KEY =
  2. HEROKU_DEV_APP_URL =
  3. HEROKU_HML_APP_URL =

landscape
Exemplo de configuração de env

Dependendo da sua pipeline, será preciso configurar outras variáveis dentro do projeto no Gitlab, como foi mostrado anteriormente

Após ter configurado essas variáveis, o arquivo gitlab-ci.yml deverá ser configurado, ‘configurando’ esse deploy automático na Heroku

Exemplo de configuração:

DeployDev:
  stage: deploy
  image: ruby:latest
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_DEV_APP_URL --api-key=$HEROKU_API_KEY
  only:
    - /^develop$/
  environment:
    name: development
  timeout: 15m

DeployHomolog:
  stage: deploy
  image: ruby:latest
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_HML_APP_URL --api-key=$HEROKU_API_KEY
  only:
    - /^homolog$/
  environment:
    name: homolog
  timeout: 15m

Após esses passos, sua aplicação deve funcionar corretamente na Heroku. Lembre-se que cada aplicação contém suas particularidades que devem ser consideradas!

Última modificação