DEV Community

Vinícius Boscardin
Vinícius Boscardin

Posted on

Fly.io, alternativa ao Heroku

No dia 25/08/2022 chegou o e-mail que o heroku vai remover alguns serviços gratuitos lá em novembro. Se você assim como eu usava muito ele para hospedar alguns testes, soluções do seu github e até mesmo algumas brincadeiras. Fly.io pode ser uma solução incrível substituindo o heroku.

Como migrar seus apps

Veremos um passo a passo para realizar a migração, tanto da aplicação quanto das esteiras de deploy no github actions.

Instalação

Image description

  • Baixe e instale o SDK fornecido.

linux

curl -L https://fly.io/install.sh | sh 
Enter fullscreen mode Exit fullscreen mode

mac

brew install flyctl 
Enter fullscreen mode Exit fullscreen mode

windows

iwr https://fly.io/install.ps1 -useb | iex 
Enter fullscreen mode Exit fullscreen mode
  • Faça o login com o SDK
fly auth login 
Enter fullscreen mode Exit fullscreen mode

Deploy

  • Na pasta raiz do seu projeto rode
fly launch # siga os passos de configuração necessários 
Enter fullscreen mode Exit fullscreen mode

Um arquivo chamado fly.toml será criado na raiz do projeto.

  • Altere a porta da aplicação.
[[services]] http_checks = [] internal_port = 3000 #porta da sua aplicação aqui processes = ["app"] protocol = "tcp" 
Enter fullscreen mode Exit fullscreen mode
  • Por fim rode
fly launch # or fly deploy 
Enter fullscreen mode Exit fullscreen mode

Acesse o link disponibilizado no fly.io e seu app estará disponível.

Image description

Github actions

Altere o arquivo de workflow do seu app. Remova tudo referente ao Heroku.

  • Adicione no arquivo_deploy.yaml.
env: FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} 
Enter fullscreen mode Exit fullscreen mode
  • No seu job
- uses: superfly/flyctl-actions/setup-flyctl@master - run: flyctl deploy --remote-only --detach 
Enter fullscreen mode Exit fullscreen mode
  • Exemplo
name: Deploy to fly.io app on: create: tags: - v* env: FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Config file access run: | rm -rf config.json touch config.json  json='{"database": {"url": "://$DB_USER:$DB_PASS@$DB_HOST:$DB_PORT/"},"server": {"port": ""}}' echo "$json" > config.json sed -i -e 's/$DB_PORT/'${{ secrets.DB_PORT }}'/g' config.json sed -i -e 's/$DB_USER/'${{ secrets.DB_USER }}'/g' config.json sed -i -e 's/$DB_PASS/'${{ secrets.DB_PASS }}'/g' config.json sed -i -e 's/$DB_HOST/'${{ secrets.DB_HOST }}'/g' config.json cat config.json - uses: superfly/flyctl-actions/setup-flyctl@master - run: flyctl deploy --remote-only --detach 
Enter fullscreen mode Exit fullscreen mode

Feito, com isso seu app já está disponível gratuitamente para uso da mesma forma que fazíamos no heroku.

Top comments (0)