Deploy do .Net Core WebAPI no Heroku

Normalmente desenvolvedores dotnet preferem fazer deploy no Windows Azure por conta da facilidade do uso da plataforma mas muitos acabam procurando opções mais baratas e ágeis do que a plataforma da MSFT.

Hoje vou mostrar como fazer deploy no Heroku, um serviço de hospedagem na nuvem um pouquinho bem diferente do nosso querido Azure.

Heroku é um serviço do tipo PaaS (Platform as a Service) altamente customizável por conta das “buildpacks” que são arquivos que apontam detalhes das necessidades de software a serem instalados na sua infraestrutura a fim de hospedar sua aplicação. No Heroku, assim como no Azure temos uma estrutura de instâncias que são chamadas de Dynos, você iria optar por aumentar a quantidade de Dynos de sua infraestrutura caso você desejasse maior escalabilidade e redundância, assim como no Azure.

Mas vamos lá.. “Less talk, more code!”
Vou deixar para falar do Heroku, seus preços, Dynos e etc em um post dedicado.

Instalando o Heroku

O Heroku, como quase tudo, possui um CLI e eu inicialmente recomendo que você acesse este link e baixe a versão do instalador ao invés de instalar via NPM.

Após a instalação vale a pena reiniciar seu PC para garantir o bom funcionamento deste CLI.

Criando repositório no Git

Fique à vontade para criar um repositório no Git o qual você irá armazenar seu projeto e posteriormente ligá-lo a sua aplicação no Heroku.

Iniciando sua solution

Você pode usar o .Net Core CLI ou Visual Studio. O importante será criar seu projeto e abrir o arquivo packages.json e alterar a versão para “1.0.0“. A versão “1.0.1” não irá funcionar.

A seguir, execute o seguinte comando do Nugget no Package Manager Console:

Install-Package Microsoft.Extensions.Configuration.CommandLine

Por fim, altere as linhas de código do método Main em Program.cs

Assim que terminar, faça commit e push de suas alterações e vamos ao Heroku.

git commit -am "Setup for Heroku"
git push

Criando sua aplicação no Heroku

Você pode criar um aplicação na interface gráfica caso tenha algum temor com linhas de comando no Bash ou Cmd (espero que não tenha) ou usar o CLI para acelerar as coisas.

Execute o login, você terá que fazer isso uma só vez:

heroku login

Na sequencia crie uma nova aplicação:

heroku create nome-da-app

Lembra que eu te disse que os buildpacks são responsáveis por “configurar” sua instância no Heroku. É exatamente isso que faremos, mesmo sabendo que este buildpack não é oficial do Heroku. (Sim, existem usuários que criam buildpacks para que você possa publicar suas aplicações independente do Heroku suportá-la nativamente)

heroku buildpacks:set http://github.com/noliar/dotnet-buildpack.git

Vale dar uma passada lá na interface do Heroku e verificar se a mesma está conectada a seu repositório git para que as coisas fluam logo na primeira tentativa.

Na sequência execute os seguintes comandos

heroku git:remote -a your-app-name
git commit -am "Setup for Heroku"
git push heroku master

Neste momento você irá acompanhar uma série de instruções referentes ao deploy de sua aplicação e no final você encontrará o seguinte resultado

remote: Verifying deploy... done.

Agora abra sua ferramenta favorita para testes de APIs (no meu caso Postman) ou a aplicação cliente diretamente e contemple os resultados!

Caso você tenha problemas com o buildpack selecionado você pode removê-lo ou limpar todos os buildpacks relacionados com os comandos

heroku buildpacks:remove http://github.com/jenyayel/dotnet-buildpack.git

ou

heroku buildpacks:clear

E também pode forçar o deploy da aplicação a partir do repositório Git pela própria interface do Heroku.

Bonus! Comando útil!

Você pode controlar a quantidade de Dynos da sua aplicação com o comando

heroku ps:scale web=2

Sendo que nos planos Free (Fique atento aos planos) você só consegue utilizar 1 Dyno e se você inserir web=0 derrubará sua aplicação mas poderá voltar a atividade rapidamente utilizando web=1.

Sempre que atualizar sua aplicação lembre se de dar commit no git e push no git e no Heroku. Se suas alterações não forem refletidas, execute o deploy manualmente.

Importante: Este artigo é dedicado ao amigo Arthur Baptista que sofreu um pouquinho tentando fazer esse deploy mas acho que agora estará salvo para sempre!

É isso aí! Até a próxima! 😉

Anúncios

4 respostas em “Deploy do .Net Core WebAPI no Heroku

  1. Belo tutorial…tirou algumas duvidas minhas…nunca usei o Heroku.
    Sabe me dizer se criando um webapi que utilize EntityFramework pra DB, ao hospedar no Heroku, ele cria tudo normalmente de boa ? Costumo usar o Azure e é bem fácil… vou testar no Heroku em uma aplicação que estou criando.

    • Olá Marcelo. Em primeiro lugar muito obrigado e fico feliz em tê-lo ajudado de alguma forma. 🙂
      Com relação ao BD hospedado também no Heroku acredito que seja possível por meio de Addons.

      Diferente do Azure o Heroku vem vazio sem nenhum serviço adicionado, você vai adicionando seus Addons para suprir as necessidades da sua aplicaçãio. existe uma infinidade de Addons desde bancos de dados até ferramentas de telemetria. Alguns Addons são desenvolvidos pela propria Heroku, outros são de terceiros e podem ser pagos ou não.

      Vou ver se encontro um addon para BD SQL Server e te aviso aqui nos comentários.
      Obrigado pela visita.
      Abraço!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s