ASP.NET Core - Deploy no Heroku usando o PostgreSQL com EF Core - II
Hoje vou mostrar como publicar uma aplicação ASP .NET Core no Heroku acessando um banco de dados PostgreSQL e usando o EF Core. |
Continuando a primeira parte do artigo vamos agora criar e configurar a aplicação no Heroku.
Criando a aplicação no Heroku
Acesse o ambiente do Heroku em https://signup.heroku.com/ e faça o login.
Clique no botão New e selecione : Create new app
Informe o nome produtoscrud e clique no botão : Create app
A seguir na próxima janela em Deployment method selecione : Container Register
Ainda nesta janela clique em Resources e a seguir clique no botão : Find more add-ons
Aqui vamos incluir um Data Storage para nossa aplicação e será apresentada uma janela com diversas opções. Em Data Stores selecione : Heroku Postgres
A seguir selecione o plano Hobby Dev que é Free e clique no botão Install Heroku Postgress
Selecione o projeto para o qual deseja instalar, no nosso caso produtoscrud e a seguir clique para submeter o pedido:
Com isso teremos o banco de dados PostgreSQL anexado ao nosso projetos produtoscrud.
Para obter as informações das configurações do nosso banco de dados vamos clicar sobre ele e na próxima janela vamos clicar em Settings:
Nesta janela, em Database Credentials vamos clicar em View Credentials para obter as informações sobre o nosso banco de dados:
Essas configurações serão usadas para acessar o PostgreSQL em nosso aplicação após a publicação no Heroku. Agora note que existe uma aviso informando que essas credenciais NÃO SÃO PERMANENTES.
Vamos agora usar essas credenciais para aplicar o Migrations e assim gerar o banco e a tabela no PostgreSQL do Heroku. Para isso vamos alterar no arquivo appsettings.json a string de conexão usando essas credenciais e a seguir vamos apagar a pasta Migrations do projeto e emitir novamente os comandos:
Nota: Você pode fazer isso manualmente usando o PgAdmin.
Após o processamento dos comandos podemos acessar o PgAdmin e ver o banco e a tabela criadas no PosgreSQL remoto:
Usando o GitHub Actions para fazer o deploy
No repositório GitHub vamos incluir 3 Secrets :
- `Heroku_APP_NAME`
- produtoscrud
- `DATABASE_URL`
- A url do PostgreSQL remoto
- `Heroku_API_KEY`
- sua API Key
|
Com isso estaremos definindo os valores dessas variáveis de ambiente que serão fornecidas para podermos acessar o banco de dados PostgreSQL a partir da nossa aplicação no Heroku.
Para obter a API Key acesse as configurações de sua conta em https://dashboard.heroku.com/account e a seguir localize API key e para visualizar clique em Reveal:
Agora adicione um novo fluxo de trabalho do GitHub na guia Github Actions em seu repositório do GitHub. Isso criará e implantará o aplicativo da Web dockerizado no Heroku sempre que você enviar algo novo para o GitHub.
Neste fluxo inclua o seguinte código:
name: deploy-Heroku
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build and deploy the Docker image
env:
Heroku_API_KEY: $
APP_NAME: $
run: |
docker login --username=_ --password=$Heroku_API_KEY registry.Heroku.com
Heroku container:push web -a $APP_NAME
Heroku container:release web -a $APP_NAME
|
Para concluir dê um commit no repositório e agora vamos fazer o deploy no Heroku.
A seguir nos logar no ambiente do contêiner: heroku container-login
E dar o push na imagem gerada : heroku container: heroku container:push web -a produtosapi-heroku
Este comando compila e, em seguida, envia imagens do Docker para implantar seu aplicativo Heroku.
Para concluir temos que liberar a aplicação: heroku container:release web -a produtosapi-heroku
Este comando faz a release da imagem Docker enviada anteriormente para seu aplicativo Heroku.
E agora podemos acessar o endereço: https://produtoscrud.herokuapp.com onde vamos obter:
Com isso temos nossa aplicação ASP .NET Core MVC publicada no Heroku e acessando o banco de dados PostgreSQL.
Infelizmente atualmente
(12 / 2022) o Heroku não oferece mais o plano gratuito e assim
a opção para fazer o deploy agora somente é possível usando um plano pago.
"Se o SENHOR não edificar a casa, em vão trabalham os que
a edificam; se o SENHOR não guardar a cidade, em vão vigia a sentinela."
Salmos 127:1
Referências:
C# - Tasks x Threads. Qual a diferença
VB .NET - Datas, horas: conceitos e operações
C# - Programação Assíncrona como : Asycn e Task
C# - Obtendo a data e a hora por TimeZone
C# - O Struct Guid - Macoratti.net
DateTime - Macoratti.net
Formatação de data e hora para uma cultura ...
C# - Calculando a diferença entre duas datas
Docker - Uma introdução básica
Docker - Trabalhando com contêineres
Motivos para usar Docker com .NET Core
Docker - Criando uma imagem com Dockerfile