Deploy - Como colocar um sistema em produção de forma simples - dotNet Core

Nesta aula iremos aprender como colocar um sistema em produção de forma simples utilizando Github e Azure.

assinaturaAssine nossa Comunidade

.Net Core - Deploy

Vamos criar uma aplicação para fazer o deploy em produção.

Criaremos uma pasta e dentro desta pasta, criaremos o projeto.

      
        mkdir deploy_azure
        cd deploy_azure
       
    

Iremos criar a aplicação MVC para fazer o deploy.

      
        dotnet new mvc
       
    

Vamos executar o projeto.

      
        dotnet run
       
    

Faremos uma alteração na view do projeto

      
        @{
          ViewData["Title"] = "Home Page";
        }
        
        < div class="text-center">
          < h1 class="display-4">Olá para você que quer colocar um sistema em produção com C#.
          Acesse o  < a href="https://www.torneseumprogramador.com.br">www.torneseumprogramador.com.br< /a>.
        < /div>
       
    

Enviar o código para o GitHub

Criremos um repositório no github com o nome deploy_azure_aula_youtube.

vamos criar um arquivo na raiz do projeto chamado .gitignore.

Vamos acessar o site gitiginore.io para que ele gere alguns arquivos que serão ignorados no github.Para isso, podemos digitar: macOS vscode VisualStudio VisualStudioCode DotnetCore

iremos copiar o conteúdo do arquivo gerado no site acima , dentro do arquivo .gitignore.

Executaremos os comandos:

  • git init.
  • git add .
  • git commit -m "deploy com o pessoal do youtube."
  • git branch -M main.
  • copiar o repositório remoto com gitremote.

Fazer o deploy na Azure

Ao criar a conta na Azure, vamos criar um AppServices

  • Em AppServices, clicar em create;
  • Selecionar um Grupo;
  • Nome da aplicação => deploy-azure-aula-youtube;
  • Publish => code;
  • Escolher o plano free;
  • Clicamos para criar a aplicação.

Ao clicar em go Resource

  • Selecionar Deployment Center;
  • Escolher a opção GitHub;
  • Escolher App Service build service;
  • Selecione o nome da organização;
  • Selecione o Repositório => deploy-azure-aula-youtube;
  • Selecione a branch main;
  • Clicar em continuar e finish.

Fazer o deploy na Azure com Banco de Dados

  • Selecionar Azure DataBase;
  • Em Sql Database, clicamos em Create SQL database;
  • Selecionar um Grupo;
  • Nome da aplicação => deploy-aula-youtube;
  • Vamos configurar para Serveless;
  • Selecionar 1GB de máquina;
  • Em Auto-pause delay, configurar para 1 hora;
  • Iremos criar a base de dados.

Será criada a string de conexão que deve ser copiada no projeto Dotnet core.

No arquivo appsettings.json, criaremos uma variável ConnectionStrings e copiaremos a string de conexão.

      
        "ConnectionStrings": {
          "DefaultConnection": "Server=tcp:aulayoutube.database.windows.net,1433;Initial catalog=deploy-aula-youtube;Persist Security Info=False;User ID=aulayoutube8b8e!"
        }
       
    

Vamos criar um Modelo de dados do EntityFramework com a estrutura de pastas abaixo:

  • Models
    • Clientes.cs
    • DbContextWeb.cs

Criaremos o modelo de Clientes:

      
        using Microsoft.EntityFrameworkCore;

        namespace WebTddBdd.Models
        {
          public class Cliente 
          {
            [Table("Clientes")]
            
            public int Id { get;set };

            public string Nome { get;set };

            public string CPF { get;set };
          }

          public void Save(){
            var context = new DBContextWeb();
            context.Clientes.Add(this);
            context.SaveChanges();
          }

          public static DbSet< Cliente>All(){
            return new DBContextWeb().CLientes;
          }

          public static void DestroyAll()
          {
            var dbContext = new DBContextWeb();
            dbContext.Database.ExecuteSqlRaw("delete from clientes");
          }
        }
       
    

No arquivo DbContextWeb.cs:

      
        using Microsoft.EntityFrameworkCore;

        namespace WebTddBdd.Models
        {
          public class DBContextWeb: DbContext 
          {
            public DBContextWeb(DBContextOptions options) : base(options)
            {

            }
            
            public DBContextWeb(){}

            public  DbSet< Cliente> Clientes(){ get; set; }
            
            protect override void onConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
              JToken jAppSettings = JToken.Parse(File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "appsettings.json")));                
              optionsBuilder.UseSqlServer(jAppSettings["ConnectionStrings"]["DefaultConnection"].ToString());
            }
          }
        }
       
    

Iremos instalar o EntityFrameworkCore.SqlServer

      
        dotnet add package Microsoft.EntityFrameworkCore.SqlServer
       
    

Iremos instalar o EntityFrameworkCore.Design

      
        dotnet add package Microsoft.EntityFrameworkCore.Design
       
    

Iremos instalar o EntityFrameworkCore.Tools

      
        dotnet add package Microsoft.EntityFrameworkCore.Tools
       
    

Vamos gerar as migrations:

      
        dotnet ef migrations add InitialCreate
       
    

No site da Azure, em Firewall settings, vamos liberar o endereço IP para que possamos acessar a base de dados local:

  • Em allow Azure services and resources to access this server, selecionar: yes.

Iremos atualizar o database:

      
        dotnet ef database update      
       
    

Na Controller->HomeController, vamos obter os clientes na Action Index:

      
        public IActionResult Index()
        {
          ViewBag.clientes = new DbContextWeb().Clientes.ToList()

          return View();
        }
        
       
    

Na pasta Views->Home, arquivo Index.cshtml, iremos mostrar a lista de clientes:

      
        @{
          ViewData["Title"] = "Home Page";
        }
        
        < div class="text-center">
          < h1 class="display-4">Olá para você que quer colocar um sistema em produção com C#.
          < p>Acesse o  < a href="https://www.torneseumprogramador.com.br">www.torneseumprogramador.com.br< /a>.

< /div> Lista de clientes
    @foreach (WebTddBdd.Models.Cliente cliente in ViewBag.clientes) {
  • Id: @cliente.Id< /br> Nome: @cliente.Nome< /br> CPF: @cliente.CPF< /br>
  • }

Vamos enviar o código para o GitHub que fará o deploy na Azure. Lembrando que a string de conexão não deve ser enviada para o GitHub. Foi feito somente para fins didáticos.

      
        git add . 
        git commit -am "com banco de dados"
        git push
       
    

No site da Microsoft Azure, em Deployment Center vamos verificar que o deploy foi concluído.

Acessando a página da aplicação: deploy-azure-aula-youtube.azurewebsites.net, serão mostrados os clientes que foram cadastrados.

Deploy - Como colocar um sistema em produção de forma simples - dotNet Core

Nesta aula iremos aprender como colocar um sistema em produção de forma simples utilizando Github e Azure.

Próximas Aulas:
assinaturaAssine nossa Comunidade

.Net Core - Deploy

Vamos criar uma aplicação para fazer o deploy em produção.

Criaremos uma pasta e dentro desta pasta, criaremos o projeto.

      
        mkdir deploy_azure
        cd deploy_azure
       
    

Iremos criar a aplicação MVC para fazer o deploy.

      
        dotnet new mvc
       
    

Vamos executar o projeto.

      
        dotnet run
       
    

Faremos uma alteração na view do projeto

      
        @{
          ViewData["Title"] = "Home Page";
        }
        
        < div class="text-center">
          < h1 class="display-4">Olá para você que quer colocar um sistema em produção com C#.
          Acesse o  < a href="https://www.torneseumprogramador.com.br">www.torneseumprogramador.com.br< /a>.
        < /div>
       
    

Enviar o código para o GitHub

Criremos um repositório no github com o nome deploy_azure_aula_youtube.

vamos criar um arquivo na raiz do projeto chamado .gitignore.

Vamos acessar o site gitiginore.io para que ele gere alguns arquivos que serão ignorados no github.Para isso, podemos digitar: macOS vscode VisualStudio VisualStudioCode DotnetCore

iremos copiar o conteúdo do arquivo gerado no site acima , dentro do arquivo .gitignore.

Executaremos os comandos:

  • git init.
  • git add .
  • git commit -m "deploy com o pessoal do youtube."
  • git branch -M main.
  • copiar o repositório remoto com gitremote.

Fazer o deploy na Azure

Ao criar a conta na Azure, vamos criar um AppServices

  • Em AppServices, clicar em create;
  • Selecionar um Grupo;
  • Nome da aplicação => deploy-azure-aula-youtube;
  • Publish => code;
  • Escolher o plano free;
  • Clicamos para criar a aplicação.

Ao clicar em go Resource

  • Selecionar Deployment Center;
  • Escolher a opção GitHub;
  • Escolher App Service build service;
  • Selecione o nome da organização;
  • Selecione o Repositório => deploy-azure-aula-youtube;
  • Selecione a branch main;
  • Clicar em continuar e finish.

Fazer o deploy na Azure com Banco de Dados

  • Selecionar Azure DataBase;
  • Em Sql Database, clicamos em Create SQL database;
  • Selecionar um Grupo;
  • Nome da aplicação => deploy-aula-youtube;
  • Vamos configurar para Serveless;
  • Selecionar 1GB de máquina;
  • Em Auto-pause delay, configurar para 1 hora;
  • Iremos criar a base de dados.

Será criada a string de conexão que deve ser copiada no projeto Dotnet core.

No arquivo appsettings.json, criaremos uma variável ConnectionStrings e copiaremos a string de conexão.

      
        "ConnectionStrings": {
          "DefaultConnection": "Server=tcp:aulayoutube.database.windows.net,1433;Initial catalog=deploy-aula-youtube;Persist Security Info=False;User ID=aulayoutube8b8e!"
        }
       
    

Vamos criar um Modelo de dados do EntityFramework com a estrutura de pastas abaixo:

  • Models
    • Clientes.cs
    • DbContextWeb.cs

Criaremos o modelo de Clientes:

      
        using Microsoft.EntityFrameworkCore;

        namespace WebTddBdd.Models
        {
          public class Cliente 
          {
            [Table("Clientes")]
            
            public int Id { get;set };

            public string Nome { get;set };

            public string CPF { get;set };
          }

          public void Save(){
            var context = new DBContextWeb();
            context.Clientes.Add(this);
            context.SaveChanges();
          }

          public static DbSet< Cliente>All(){
            return new DBContextWeb().CLientes;
          }

          public static void DestroyAll()
          {
            var dbContext = new DBContextWeb();
            dbContext.Database.ExecuteSqlRaw("delete from clientes");
          }
        }
       
    

No arquivo DbContextWeb.cs:

      
        using Microsoft.EntityFrameworkCore;

        namespace WebTddBdd.Models
        {
          public class DBContextWeb: DbContext 
          {
            public DBContextWeb(DBContextOptions options) : base(options)
            {

            }
            
            public DBContextWeb(){}

            public  DbSet< Cliente> Clientes(){ get; set; }
            
            protect override void onConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
              JToken jAppSettings = JToken.Parse(File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "appsettings.json")));                
              optionsBuilder.UseSqlServer(jAppSettings["ConnectionStrings"]["DefaultConnection"].ToString());
            }
          }
        }
       
    

Iremos instalar o EntityFrameworkCore.SqlServer

      
        dotnet add package Microsoft.EntityFrameworkCore.SqlServer
       
    

Iremos instalar o EntityFrameworkCore.Design

      
        dotnet add package Microsoft.EntityFrameworkCore.Design
       
    

Iremos instalar o EntityFrameworkCore.Tools

      
        dotnet add package Microsoft.EntityFrameworkCore.Tools
       
    

Vamos gerar as migrations:

      
        dotnet ef migrations add InitialCreate
       
    

No site da Azure, em Firewall settings, vamos liberar o endereço IP para que possamos acessar a base de dados local:

  • Em allow Azure services and resources to access this server, selecionar: yes.

Iremos atualizar o database:

      
        dotnet ef database update      
       
    

Na Controller->HomeController, vamos obter os clientes na Action Index:

      
        public IActionResult Index()
        {
          ViewBag.clientes = new DbContextWeb().Clientes.ToList()

          return View();
        }
        
       
    

Na pasta Views->Home, arquivo Index.cshtml, iremos mostrar a lista de clientes:

      
        @{
          ViewData["Title"] = "Home Page";
        }
        
        < div class="text-center">
          < h1 class="display-4">Olá para você que quer colocar um sistema em produção com C#.
          < p>Acesse o  < a href="https://www.torneseumprogramador.com.br">www.torneseumprogramador.com.br< /a>.

< /div> Lista de clientes
    @foreach (WebTddBdd.Models.Cliente cliente in ViewBag.clientes) {
  • Id: @cliente.Id< /br> Nome: @cliente.Nome< /br> CPF: @cliente.CPF< /br>
  • }

Vamos enviar o código para o GitHub que fará o deploy na Azure. Lembrando que a string de conexão não deve ser enviada para o GitHub. Foi feito somente para fins didáticos.

      
        git add . 
        git commit -am "com banco de dados"
        git push
       
    

No site da Microsoft Azure, em Deployment Center vamos verificar que o deploy foi concluído.

Acessando a página da aplicação: deploy-azure-aula-youtube.azurewebsites.net, serão mostrados os clientes que foram cadastrados.