Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste tutorial, você aprenderá a implantar um aplicativo ASP.NET Core e o Banco de Dados SQL em Aplicativos de Contêiner do Azure usando o Visual Studio e as Ações do GitHub. Você também aprenderá como gerenciar migrações do Entity Framework e atualizações de banco de dados no GitHub Actions, embora os conceitos também possam ser aplicados a outras ferramentas e ambientes de CI/CD.
Pré-requisitos
Você precisa ter o Visual Studio 2022 instalado com as cargas de trabalho de desenvolvimento ASP.NET e web e de desenvolvimento do Azure.
Se você já instalou o Visual Studio:
- Instale as atualizações mais recentes no Visual Studio selecionando Ajuda>Verificar se há atualizações.
- Verifique se o de desenvolvimento ASP.NET e Web e as cargas de trabalho de de desenvolvimento do Azure estão instaladas selecionando Ferramentas >Obter Ferramentas e Recursos.
Advertência
Este artigo faz uso de cadeias de conexão. Tenha cuidado ao gerenciar conexões usando nomes de usuário, senhas ou chaves de acesso. Esses segredos não devem ser comprometidos com o controle do código-fonte ou colocados em locais não seguros onde possam ser acessados por usuários não intencionais. Durante o desenvolvimento local, você geralmente se conectará a um banco de dados local que não requer o armazenamento de segredos ou a conexão direta com o Azure. Durante a produção, se conectar ao seu banco de dados SQL do Azure usando uma abordagem secreta como de ID do Microsoft Entra quando possível.
Configurar o aplicativo de exemplo localmente
Use o aplicativo de exemplo TODO para acompanhar este tutorial. Clone o aplicativo do GitHub usando o seguinte comando:
git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore
Navegue até a pasta do projeto e abra a solução DotNetCoreSqlDb.sln no Visual Studio.
O aplicativo TODO está pronto para uso, mas você precisará estabelecer uma conexão com o localdb SQL Server que está disponível no Visual Studio. Conectar-se ao localdb permitirá que você execute o aplicativo e persista enquanto trabalha localmente.
- Clique com o botão direito do mouse no nó Serviços Conectados no Gerenciador de Soluções do Visual Studio e selecione Adicionar > Banco de Dados do SQL Server.
- Na caixa de diálogo Conectar à dependência , selecione SQL Server Express LocalDB (Local) e depois selecione Avançar .
- Na caixa de diálogo Conectar ao SQL Server Express LocalDB (Local), defina os seguintes valores:
- Nome da cadeia de conexão: Deixe o valor padrão.
- Valor da cadeia de conexão: Deixe o valor padrão.
- Salvar valor da cadeia de conexão em: Selecione Nenhum.
- Selecione Próximo
- Na tela Resumo das alterações, deixe as configurações em seus valores padrão e selecione Concluir para concluir o fluxo de trabalho.
O Visual Studio exibe um resumo das dependências de serviço, incluindo a conexão com LocalDB.
Em seguida, você precisará criar uma migração inicial e usá-la para atualizar o banco de dados local com o esquema correto para o aplicativo TODO.
- Selecione o ícone ... à direita da lista de dependências de serviço ao lado da conexão
LocalDBe escolha Adicionar migração. - Na caixa de diálogo Migrações do Entity Framework, aguarde um momento para que o Visual Studio localize a classe
DbContextincluída no projeto. Depois que os valores forem carregados, selecione Concluir. - O Visual Studio gera uma pasta
Migrationsno projeto e cria uma classe inicial de migrações. Essa classe pode ser usada para atualizar o banco de dados com o esquema correto. - Selecione o ícone ... ao lado do serviço
LocalDBnovamente e selecione Atualizar banco de dados. - Na caixa de diálogo Migrações do Entity Framework, aguarde um momento para que o Visual Studio localize a classe
DbContextnovamente e, em seguida, selecione Concluir. O Visual Studio executa a migração e cria o esquema para o banco de dados no servidorLocalDB.
Inicie o projeto selecionando o botão Executar DotNetCoreSqlDb na parte superior do Visual Studio.
Quando a aplicação carregar, verifique se o banco de dados está a funcionar corretamente inserindo um novo TODO. O TODO aparece na exibição de lista principal na página inicial do aplicativo.
Explore a configuração de inicialização do aplicativo
O aplicativo de exemplo inclui o seguinte código no arquivo Program.cs:
if(builder.Environment.IsDevelopment())
{
builder.Services.AddDbContext<MyDatabaseContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
}
else
{
builder.Services.AddDbContext<MyDatabaseContext>(options =>
options.UseSqlServer(Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")));
}
Este código aplica as seguintes configurações:
- Quando o aplicativo é executado localmente, a cadeia de conexão
localdbé extraída do arquivoappsettings.jsone fornecida ao Entity Framework. Essa configuração permite que a cadeia de conexãolocaldbseja verificada no controle do código-fonte para que outros desenvolvedores possam se conectar facilmente a um banco de dados local durante o desenvolvimento. Ele também permite que as migrações do Entity Framework sejam executadas localmente. Por padrão, o Entity Framework não descobrirá cadeias de conexão armazenadas na variável de ambiente ao executar migrações. - Quando o aplicativo é executado em fluxos de trabalho de Ações do GitHub ou em Produção, a cadeia de conexão é extraída de variáveis de ambiente. As variáveis de ambiente podem impedir que cadeias de conexão seguras de produção sejam verificadas no controle do código-fonte ou incluídas em arquivos de configuração.
Criar os serviços do Azure
O aplicativo exigirá que os seguintes serviços do Azure sejam criados para uma implantação bem-sucedida:
- Container App: necessário para hospedar e executar o aplicativo implantado.
- Container Registry: Armazena o artefato de imagem criado do aplicativo em contêiner.
- Banco de Dados SQL: Um Azure SQL Database para armazenar os dados do aplicativo.
Os recursos de publicação do Visual Studio podem lidar com a criação desses recursos para você.
Criar o Aplicativo de Contêiner do Azure e o Registro de Contêiner do Azure
No Gerenciador de Soluções do Visual Studio, clique com o botão direito do mouse no nó do projeto de nível superior e selecione Publicar.
Na caixa de diálogo de publicação, selecione do Azure como destino de implantação e selecione Avançar.
Para o destino específico, selecione Aplicativos de Contêiner do Azure (Linux)e, em seguida, selecione Avançar.
Crie um novo aplicativo de contêiner para implantar. Selecione o botão + Criar nova para abrir uma nova caixa de diálogo e insira os seguintes valores:
- Nome do aplicativo de contêiner: Deixe o valor padrão ou insira um nome.
- Nome da assinatura: Selecione a assinatura para implantar.
- Grupo de recursos: Selecione Novo e crie um novo grupo de recursos chamado msdocs-app-db-ef.
-
Ambiente de aplicativos de contêiner: Selecione Novo para abrir a caixa de diálogo de ambiente de aplicativos de contêiner e insira os seguintes valores:
- Nome do ambiente: Manter o valor padrão.
- Localização: Selecione um local perto de você.
-
Espaço de Trabalho do Azure Log Analytics: Selecione Novo para abrir a caixa de diálogo do Log Analytics.
- Nome: Deixe o valor padrão.
- Localização: Selecione um local perto de você e, em seguida, selecione Ok para fechar a caixa de diálogo.
- Selecione Ok para fechar a caixa de diálogo de ambiente de aplicativos de contêiner.
- Selecione Criar para fechar a caixa de diálogo original dos aplicativos de contêiner. O Visual Studio cria o recurso de aplicativo de contêiner no Azure.
Depois que o recurso for criado, verifique se ele está selecionado na lista de aplicativos de contêiner e selecione Avançar.
Você precisará criar um Registro de Contêiner do Azure para armazenar o artefato de imagem publicado para seu aplicativo. Selecione o ícone verde + no ecrã do Registry de Contêineres .
Deixe os valores padrão e selecione Criar.
Depois que o registro de contêiner for criado, verifique se ele está selecionado e, em seguida, selecione Avançar.
Na tela Tipo de implantação do, selecione fluxos de trabalho CI/CD usando fluxos de trabalho do GitHub Actions (gera arquivo yml) e escolha Concluir. Se o Visual Studio solicitar que você habilite o usuário Admin para acessar o contêiner do Docker publicado, selecione Sim.
O Visual Studio cria e exibe o perfil de publicação. A maioria das etapas e detalhes de publicação são descritos no arquivo .yml Ações do GitHub, que pode ser visualizado clicando no botão Editar fluxo de trabalho na vista de resumo do perfil de publicação. Este arquivo é abordado em maior profundidade mais adiante no artigo.
Criar o Banco de Dados SQL do Azure
- No Gerenciador de Soluções, clique com o botão direito do mouse no nó Serviços Conectados e selecione Adicionar > Banco de Dados do SQL Server.
- Na caixa de diálogo Conectar à dependência, selecione Azure SQL Database e, em seguida, escolha Avançar.
- Selecione + Criar novo para adicionar um novo banco de dados.
- Na caixa de diálogo Banco de Dados SQL do Azure, insira os seguintes valores:
- Nome do banco de dados: Deixe o valor padrão.
- Nome da assinatura: Selecione a mesma assinatura que anteriormente.
-
Grupo de Recursos: Selecione o mesmo grupo de
msdocs-app-db-efcriado anteriormente. -
Servidor de Banco de Dados: Selecione Novo... e insira os seguintes valores no novo POP-up:
- Nome do Servidor de Banco de Dados: Insira um nome de servidor exclusivo ou acrescente números aleatórios ao final do nome gerado automaticamente.
- Localização: Selecione um local próximo a você.
- Nome de usuário do administrador: Insira um valor de sua escolha.
- Senha de administrador: Insira um valor de sua escolha.
- Palavra-passe de administrador (confirmar): Introduza a mesma palavra-passe para confirmar. Selecione OK para fechar a caixa de diálogo SQL Server
- Selecione Criar para criar o SQL Server e o banco de dados.
- Quando a operação for concluída, selecione o servidor na lista e escolha Próximo
- Na caixa de diálogo Conectar ao Banco de Dados SQL do Azure, deixe os valores padrão, mas verifique se Nenhum está selecionado na parte inferior da opção Salvar cadeia de conexão na opção.
- Selecione Concluir e o Visual Studio criará os recursos SQL.
Conectar o aplicativo de contêiner ao Azure SQL
Na página de visão geral do Aplicativo de Contêiner que você criou, selecione Conector de Serviço (visualização) na navegação à esquerda.
Selecione + Criar para criar uma nova conexão.
No submenu Criar conexão, insira os seguintes valores:
Container: Selecione o dotnetcoresqldb contêiner que você criou.
Tipo de serviço: Selecione Banco de dados SQL.
Assinatura: Selecione a mesma assinatura usada para criar o aplicativo de contêiner.
Nome da conexão: Deixe o valor padrão.
SQL Server: Selecione o servidor de banco de dados criado anteriormente.
base de dados SQL: Selecione a base de dados criada anteriormente.
Tipo de cliente: Selecione .NET.
Selecione Next: Authentication e insira os seguintes valores:
- Selecione Cadeia de conexão para o tipo de autenticação.
- Nome de usuário: Digite o nome de usuário usado ao criar o servidor de banco de dados.
- Senha: Digite a senha que você usou ao criar o servidor de banco de dados.
Deixe o restante das configurações no padrão e selecione Next: Networking.
Deixe o valor padrão selecionado e escolha Seguinte: Rever + Criar.
Depois que o Azure validar as configurações, selecione Criar .
Depois de um momento, a conexão com o banco de dados SQL deve aparecer. Selecione a seta para expandir a conexão e ver o valor AZURE_SQL_CONNECTIONSTRING. Esse nome de conexão corresponde ao nome da cadeia de conexão da variável de ambiente definida no aplicativo de exemplo.
Configurar o fluxo de trabalho de Ações do GitHub
O arquivo de fluxo de trabalho GitHub Actions gerado pelo Visual Studio pode ser usado pelo GitHub para criar e implantar o aplicativo no Azure quando as alterações são enviadas por push. Atualmente, esse processo funcionaria, mas o aplicativo implantado lançaria uma exceção. Embora o banco de dados SQL do Azure tenha sido criado, uma etapa deve ser adicionada ao fluxo de trabalho de Ações do GitHub para gerar o esquema. A cadeia de conexão para o banco de dados SQL do Azure pode ser armazenada com segurança como um segredo no GitHub e recuperada pelo fluxo de trabalho quando ele é executado.
Recuperar a cadeia de conexão e adicioná-la aos segredos do GitHub
No portal do Azure, procure o banco de dados criado na barra de pesquisa principal e selecione-o nos resultados.
Na página de visão geral do banco de dados, selecione Cadeias de conexão na navegação à esquerda.
Na guia ADO.NET, copie a cadeia de conexão para fora do campo de formulário.
Navegue até ao repositório GitHub clonado da aplicação.
Na guia Configurações do, selecione > Segredos Ações na navegação à esquerda e escolha Novo segredo do repositório.
Na página Novo segredo, insira os seguintes valores:
A cadeia de conexão agora é armazenada com segurança nos segredos do repositório GitHub e pode ser recuperada usando um fluxo de trabalho do GitHub.
Modificar o fluxo de trabalho de Ações do GitHub para habilitar migrações
Abra o arquivo de fluxo de trabalho do GitHub Actions
.ymlgerado pelo Visual Studio ao selecionar o botão Editar Fluxo de Trabalho na página de resumo da publicação.Anexe o seguinte yaml ao final do arquivo de fluxo de trabalho:
- name: Run EF run: | dotnet tool install --global dotnet-ef dotnet tool restore dotnet ef database update -p DotNetCoreSqlDb --connection '${{ secrets.DBConnection }}'Esse código instala as ferramentas de linha de comando do entity framework e executa as migrações do aplicativo. Quando o fluxo de trabalho é executado, o código também usa o parâmetro
connectiondo comandodatabase updatepara substituir a cadeia de conexãolocaldbarmazenada no arquivoappsettings.jsonpelo valor que foi adicionado aos segredos do GitHub.
Execute o fluxo de trabalho de Ações do GitHub e teste a implantação
Confirme as alterações no aplicativo e envie por push para o repositório bifurcado usando o seguinte comando:
git add --all git commit -m "Added GitHub Actions workflow" git pushNavegue até o repositório GitHub e selecione o separador Ações. Uma execução de um fluxo de trabalho deve ter sido acionada automaticamente se o envio por push tiver sido bem-sucedido.
Selecione o fluxo de trabalho ativo para exibir os detalhes de log de cada etapa à medida que forem concluídos. A migração é executada por último para atualizar o banco de dados no Azure.
Após a conclusão do fluxo de trabalho, o aplicativo é implantado nos Aplicativos de Contêiner do Azure e conectado ao banco de dados com um esquema atualizado.
Você pode testar a implantação navegando até a página inicial do aplicativo de contêiner e criando um TODO, assim como fez localmente. Você sempre pode encontrar a URL do seu aplicativo de contêiner na página de visão geral do aplicativo no portal do Azure.