Tutorial: Implantar um aplicativo Web Node.js + MongoDB no Azure
O Serviço de Aplicativo do Azure fornece um serviço de hospedagem na Web altamente escalável e auto-corrigido usando o sistema operacional Linux. Este tutorial mostra como criar um aplicativo de Node.js seguro no Serviço de Aplicativo do Azure conectado a um banco de dados do Azure Cosmos DB para MongoDB . Quando terminar, você terá um aplicativo Express.js em execução no Serviço de Aplicativo do Azure no Linux.
Neste tutorial, irá aprender a:
- Crie uma arquitetura segura por padrão para o Serviço de Aplicativo do Azure e o Azure Cosmos DB com a API do MongoDB.
- Proteja segredos de conexão usando uma identidade gerenciada e referências do Cofre de Chaves.
- Implante um aplicativo de exemplo de Node.js no Serviço de Aplicativo a partir de um repositório GitHub.
- Acesse as configurações do aplicativo Serviço de Aplicativo no código do aplicativo.
- Faça atualizações e reimplante o código do aplicativo.
- Transmita logs de diagnóstico do Serviço de Aplicativo.
- Gerencie o aplicativo no portal do Azure.
- Provisione a mesma arquitetura e implante usando a CLI do Azure Developer.
- Otimize seu fluxo de trabalho de desenvolvimento com o GitHub Codespaces e o GitHub Copilot.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
- Uma conta GitHub. Você também pode obter um gratuitamente.
- Conhecimento do desenvolvimento Express.js.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma versão experimental gratuita de 30 dias.
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
- CLI do Desenvolvedor do Azure instalada. Você pode seguir as etapas com o Azure Cloud Shell porque ele já tem a CLI do Desenvolvedor do Azure instalada.
- Conhecimento do desenvolvimento Express.js.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma versão experimental gratuita de 30 dias.
Saltar para o fim
Você pode implantar rapidamente o aplicativo de exemplo neste tutorial e vê-lo em execução no Azure. Basta executar os seguintes comandos no Azure Cloud Shell e seguir o prompt:
mkdir msdocs-nodejs-mongodb-azure-sample-app
cd msdocs-nodejs-mongodb-azure-sample-app
azd init --template msdocs-nodejs-mongodb-azure-sample-app
azd up
1. Execute o exemplo
Primeiro, você configura um aplicativo controlado por dados de exemplo como ponto de partida. Para sua conveniência, o repositório de exemplo inclui uma configuração de contêiner de desenvolvimento. O contêiner de desenvolvimento tem tudo o que você precisa para desenvolver um aplicativo, incluindo o banco de dados, o cache e todas as variáveis de ambiente necessárias para o aplicativo de exemplo. O contêiner de desenvolvimento pode ser executado em um espaço de código GitHub, o que significa que você pode executar o exemplo em qualquer computador com um navegador da Web.
Passo 1: Em uma nova janela do navegador:
- Iniciar sessão na sua conta do GitHub.
- Navegar para https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app/fork.
- Desmarque Copiar somente a ramificação principal. Você quer todos os ramos.
- Selecione Criar bifurcação.
Passo 2: Na bifurcação do GitHub:
- Selecione o starter-no-infra principal>para o ramo inicial. Esta ramificação contém apenas o projeto de exemplo e nenhum arquivo ou configuração relacionados ao Azure.
- Selecione Code>Create codespace on starter-no-infra. O codespace leva alguns minutos para ser configurado.
Passo 3: No terminal codespace:
- Execute o
npm install && npm start
. - Quando vir a notificação
Your application running on port 3000 is available.
, selecione Abrir no navegador. Você deve ver o aplicativo de exemplo em uma nova guia do navegador. Para parar o aplicativo Express.js, digiteCtrl
+C
.
Gorjeta
Você pode perguntar ao GitHub Copilot sobre este repositório. Por exemplo:
- @workspace O que faz este projeto?
- @workspace O que faz a pasta .devcontainer?
Tem problemas? Verifique a seção Solução de problemas.
2. Criar o Serviço de Aplicativo e o Azure Cosmos DB
Nesta etapa, você cria os recursos do Azure. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Azure Cosmos DB para MongoDB. Para o processo de criação, você especificará:
- O Nome do aplicativo Web. Ele é usado como parte do nome DNS do seu aplicativo na forma de
https://<app-name>-<hash>.<region>.azurewebsites.net
. - A região para executar o aplicativo fisicamente no mundo. Ele também é usado como parte do nome DNS do seu aplicativo.
- A pilha de tempo de execução para o aplicativo. É onde você seleciona a versão do Node a ser usada para seu aplicativo.
- O plano de hospedagem para o aplicativo. É a camada de preço que inclui o conjunto de recursos e a capacidade de dimensionamento para seu aplicativo.
- O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos do Azure necessários para o aplicativo.
Entre no portal do Azure e siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.
Etapa 1: No portal do Azure:
- Insira "banco de dados de aplicativo Web" na barra de pesquisa na parte superior do portal do Azure.
- Selecione o item rotulado Web App + Database sob o título Marketplace . Você também pode navegar diretamente para o assistente de criação.
Etapa 2: Na página Criar Aplicativo Web + Banco de Dados , preencha o formulário da seguinte maneira.
- Grupo de recursos: Selecione Criar novo e use um nome de msdocs-expressjs-mongodb-tutorial.
- Região: qualquer região do Azure perto de você.
- Nome: msdocs-expressjs-mongodb-XYZ, onde XYZ é qualquer três caracteres aleatórios.
- Pilha de tempo de execução: Nó 20 LTS.
- Motor: API do Cosmos DB para MongoDB. O Azure Cosmos DB é um banco de dados nativo da nuvem que oferece uma API 100% compatível com MongoDB. Observe o nome do banco de dados gerado para você (<app-name-database>). Precisará dele mais tarde.
- Plano de hospedagem: Básico. Quando estiver pronto, você poderá escalar para um nível de preço de produção.
- Selecione Rever + criar.
- Após a conclusão da validação, selecione Criar.
Etapa 3: A implantação leva alguns minutos para ser concluída. Quando a implantação for concluída, selecione o botão Ir para o recurso . Você é levado diretamente para o aplicativo do Serviço de Aplicativo, mas os seguintes recursos são criados:
- Grupo de recursos → O contêiner para todos os recursos criados.
- Plano do Serviço de Aplicativo → Define os recursos de computação para o Serviço de Aplicativo. Um plano Linux na camada Basic é criado.
- Serviço de Aplicativo → Representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
- A rede virtual → integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
- Ponto de extremidade privado → Ponto de extremidade do Access para o recurso de banco de dados na rede virtual.
- Interface de rede → Representa um endereço IP privado para o ponto de extremidade privado.
- Azure Cosmos DB para MongoDB → Acessível apenas por trás do ponto de extremidade privado. Um banco de dados e um usuário são criados para você no servidor.
- Zona DNS privada → Habilita a resolução DNS do servidor Azure Cosmos DB na rede virtual.
Tem problemas? Verifique a seção Solução de problemas.
3. Segredos de conexão seguros
O assistente de criação gerou a cadeia de conectividade para você já como uma configuração de aplicativo. No entanto, a prática recomendada de segurança é manter os segredos completamente fora do Serviço de Aplicativo. Você moverá seus segredos para um cofre de chaves e alterará a configuração do aplicativo para uma referência do Cofre de Chaves com a ajuda dos Conectores de Serviço.
Etapa 1: Na página Serviço de Aplicativo:
- No menu à esquerda, selecione Configurações > Variáveis de ambiente.
- Ao lado de AZURE_COSMOS_CONNECTIONSTRING, selecione Mostrar valor. Essa cadeia de conexão permite que você se conecte ao banco de dados do Cosmos DB protegido atrás de um ponto de extremidade privado. No entanto, o segredo é salvo diretamente no aplicativo do Serviço de Aplicativo, o que não é o melhor. Você vai mudar isso.
Passo 2: Crie um cofre de chaves para a gestão segura de segredos.
- Na barra de pesquisa superior, digite "cofre de chaves" e selecione Cofre de chaves do Marketplace>.
- Em Grupo de Recursos, selecione msdocs-expressjs-mongodb-tutorial.
- Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
- Em Região, defina-o como o local de exemplo como o grupo de recursos.
Passo 3:
- Selecione o separador Rede.
- Desmarque Ativar acesso público.
- Selecione Criar um ponto de extremidade privado.
- Em Grupo de Recursos, selecione msdocs-expressjs-mongodb-tutorial.
- Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
- Em Região, defina-o como o local de exemplo como o grupo de recursos.
- Na caixa de diálogo, em Local, selecione o mesmo local do seu aplicativo do Serviço de Aplicativo.
- Em Grupo de Recursos, selecione msdocs-expressjs-mongodb-tutorial.
- Em Nome, digite msdocs-expressjs-mongodb-XYZVaultEndpoint.
- Em Rede virtual, selecione msdocs-expressjs-mongodb-XYZVnet.
- Em Sub-rede, msdocs-expressjs-mongodb-XYZSubnet.
- Selecione OK.
- Selecione Rever + criar e, em seguida, selecione Criar. Aguarde a conclusão da implantação do cofre de chaves. Você deve ver "Sua implantação está concluída".
Passo 4:
- Na barra de pesquisa superior, digite msdocs-expressjs-mongodb e, em seguida, o recurso do Serviço de Aplicativo chamado msdocs-expressjs-mongodb-XYZ.
- Na página Serviço de Aplicativo, no menu à esquerda, selecione Configurações > do Conector de Serviço. Já existe um conector, que o assistente de criação de aplicativos criou para você.
- Marque a caixa de seleção ao lado do conector e selecione Editar.
- Na guia Noções básicas, defina Tipo de cliente como Node.js.
- Selecione a guia Autenticação .
- Selecione Armazenar segredo no Cofre da chave.
- Em Conexão do Cofre da Chave, selecione Criar novo. Uma caixa de diálogo Criar conexão é aberta na parte superior da caixa de diálogo de edição.
Etapa 5: Na caixa de diálogo Criar conexão para a conexão do Cofre da Chave:
- No Cofre de Chaves, selecione o cofre de chaves criado anteriormente.
- Selecione Rever + Criar. Você verá que a identidade gerenciada atribuída ao sistema está definida como Selecionada.
- Quando a validação for concluída, selecione Criar.
Etapa 6: Você está de volta na caixa de diálogo de edição para defaultConnector.
- Na guia Autenticação, aguarde até que o conector do cofre de chaves seja criado. Quando terminar, a lista suspensa Conexão do Cofre da Chave selecioná-la-á automaticamente.
- Selecione Next: Networking.
- Selecione Configurar regras de firewall para habilitar o acesso ao serviço de destino. Se você vir a mensagem "Nenhum ponto de extremidade privado no serviço de destino", ignore-a. O assistente de criação de aplicativos já protegia o banco de dados do Cosmos DB com um ponto de extremidade privado.
- Selecione Guardar. Aguarde até que a notificação Atualização bem-sucedida seja exibida.
Passo 7: Para verificar as alterações:
- No menu à esquerda, selecione Variáveis de ambiente novamente.
- Ao lado da AZURE_COSMOS_CONNECTIONSTRING de configuração do aplicativo, selecione Mostrar valor. O valor deve ser
@Microsoft.KeyVault(...)
, o que significa que é uma referência do cofre de chaves porque o segredo agora é gerenciado no cofre de chaves.
Tem problemas? Verifique a seção Solução de problemas.
4. Implantar código de exemplo
Nesta etapa, você configura a implantação do GitHub usando as Ações do GitHub. É apenas uma das muitas maneiras de implantar no Serviço de Aplicativo, mas também uma ótima maneira de ter integração contínua em seu processo de implantação. Por padrão, cada git push
um no repositório do GitHub inicia a ação de compilação e implantação.
Etapa 1: no menu à esquerda, selecione Deployment>Deployment Center.
Etapa 2: Na página Centro de Implantação:
- Em Source, selecione GitHub. Por padrão, as Ações do GitHub são selecionadas como o provedor de compilação.
- Entre na sua conta do GitHub e siga o prompt para autorizar o Azure.
- Em Organização, selecione sua conta.
- Em Repositório, selecione msdocs-nodejs-mongodb-azure-sample-app.
- Em Ramo, selecione starter-no-infra. Essa é a mesma ramificação em que você trabalhou com seu aplicativo de exemplo, sem nenhum arquivo ou configuração relacionada ao Azure.
- Em Tipo de autenticação, selecione Identidade atribuída pelo usuário.
- No menu superior, selecione Salvar. O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub escolhido, no
.github/workflows
diretório. Por padrão, o centro de implantação cria uma identidade atribuída pelo usuário para que o fluxo de trabalho seja autenticado usando o Microsoft Entra (autenticação OIDC). Para obter opções de autenticação alternativas, consulte Implantar no Serviço de Aplicativo usando ações do GitHub.
Passo 3: De volta ao espaço de código do GitHub da sua bifurcação de exemplo, execute git pull origin starter-no-infra
.
Isso extrai o arquivo de fluxo de trabalho recém-confirmado para seu espaço de código.
Passo 4 (Opção 1: com o GitHub Copilot):
- Inicie uma nova sessão de chat selecionando a vista Chat e, em seguida, selecionando +.
- Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode apontá-lo para o arquivo app.js e para a
mongoose.connect
chamada. - Diga: "*Tenho uma variável de cadeia de conexão no Azure chamada AZURE_COSMOS_CONNECTIONSTRING.". O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para você fazer a alteração no app.js.
- Abra app.js no explorador e adicione a sugestão de código no
getApp
método. O GitHub Copilot não lhe dá sempre a mesma resposta, talvez seja necessário fazer mais perguntas para ajustar a resposta. Para obter dicas, consulte O que posso fazer com o GitHub Copilot no meu codespace?.
Passo 4 (Opção 2: sem o Copilot do GitHub):
- No explorador, abra app.js.
- Encontre a linha onde
mongoose.connect
é chamada (Linha 16) e mudeprocess.env.MONGODB_URI
paraprocess.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI
.
Passo 5:
- Selecione a extensão Controle do código-fonte.
- Na caixa de texto, digite uma mensagem de confirmação como
Update environment variable
. Ou selecione e deixe o GitHub Copilot gerar uma mensagem de confirmação para você. - Selecione Confirmar e, em seguida, confirme com Sim.
- Selecione Sincronizar alterações 1 e, em seguida, confirme com OK.
Etapa 6: De volta à página Centro de Implantação no portal do Azure:
- Na guia Logs, selecione Atualizar. Uma nova execução de implantação já foi iniciada a partir de suas alterações confirmadas.
- No item de log para a execução da implantação, selecione a entrada Compilar/Implantar Logs com o carimbo de data/hora mais recente.
Etapa 7: Você é levado ao repositório do GitHub e vê que a ação do GitHub está em execução. O arquivo de fluxo de trabalho define dois estágios separados, build e deploy. Aguarde até que a execução do GitHub mostre um status de Concluído.
Tem problemas? Verifique a seção Solução de problemas.
5. Navegue até o aplicativo
Etapa 1: Na página Serviço de Aplicativo:
- No menu à esquerda, selecione Visão geral.
- Selecione o URL do seu aplicativo. Você também pode navegar diretamente para
https://<app-name>.azurewebsites.net
.
Passo 2: Adicione algumas tarefas à lista. Parabéns, você está executando um aplicativo de Node.js seguro orientado por dados no Serviço de Aplicativo do Azure.
6. Transmitir logs de diagnóstico
O Serviço de Aplicativo do Azure captura todas as mensagens registradas no console para ajudá-lo a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo gera mensagens de log do console em cada um de seus pontos de extremidade para demonstrar esse recurso. Por exemplo, o get
ponto de extremidade emite uma mensagem sobre o número de tarefas recuperadas do banco de dados e uma mensagem de erro aparece se algo der errado.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
Etapa 1: Na página Serviço de Aplicativo:
- No menu à esquerda, selecione Logs do Serviço de Aplicativo.
- Em Registo de aplicações, selecione Sistema de ficheiros.
- No menu superior, selecione Salvar.
Passo 2: No menu à esquerda, selecione Log stream. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner.
7. Inspecione os arquivos implantados usando o Kudu
O Serviço de Aplicativo do Azure fornece um console de diagnóstico baseado na Web chamado Kudu que permite examinar o ambiente de hospedagem do servidor para seu aplicativo Web. Usando o Kudu, você pode exibir os arquivos implantados no Azure, revisar o histórico de implantação do aplicativo e até mesmo abrir uma sessão SSH no ambiente de hospedagem.
Etapa 1: Na página Serviço de Aplicativo:
- No menu à esquerda, selecione Ferramentas avançadas.
- Selecione Ir. Você também pode navegar diretamente para
https://<app-name>.scm.azurewebsites.net
.
Passo 2: Na página Kudu, selecione Implantações.
Se você implantar código no Serviço de Aplicativo usando o Git ou zip deploy, verá um histórico de implantações do seu aplicativo Web.
Passo 3: Volte para a página inicial do Kudu e selecione Site wwwroot.
Você pode ver a estrutura de pastas implantada e selecionar para procurar e visualizar os arquivos.
8. Limpar os recursos
Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure eliminando o grupo de recursos.
Etapa 1: Na barra de pesquisa na parte superior do portal do Azure:
- Insira o nome do grupo de recursos.
- Selecione o grupo de recursos.
Etapa 2: na página do grupo de recursos, selecione Excluir grupo de recursos.
Passo 3:
- Introduza o nome do grupo de recursos para confirmar a sua eliminação.
- Selecione Eliminar.
2. Crie recursos do Azure e implante um aplicativo de exemplo
Nesta etapa, você cria os recursos do Azure e implanta um aplicativo de exemplo no Serviço de Aplicativo no Linux. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Azure Cosmos DB.
O contêiner de desenvolvimento já tem a CLI do Desenvolvedor do Azure (AZD).
A partir da raiz do repositório, execute
azd init
.azd init --template nodejs-app-service-cosmos-redis-infra
Quando solicitado, dê as seguintes respostas:
Pergunta Resposta O diretório atual não está vazio. Gostaria de inicializar um projeto aqui no '<seu-diretório>'? Y O que você gostaria de fazer com esses arquivos? Manter os meus ficheiros existentes inalterados Insira um novo nome de ambiente Escreva um nome exclusivo. O modelo AZD usa esse nome como parte do nome DNS do seu aplicativo Web no Azure ( <app-name>-<hash>.azurewebsites.net
). São permitidos caracteres alfanuméricos e hífenes.Entre no Azure executando o
azd auth login
comando e seguindo o prompt:azd auth login
Crie os recursos necessários do Azure e implante o código do aplicativo com o
azd up
comando. Siga o prompt para selecionar a assinatura desejada e o local para os recursos do Azure.azd up
O
azd up
comando leva cerca de 15 minutos para ser concluído (o cache Redis leva mais tempo). Ele também compila e implanta o código do aplicativo, mas você modificará o código mais tarde para trabalhar com o Serviço de Aplicativo. Enquanto está em execução, o comando fornece mensagens sobre o processo de provisionamento e implantação, incluindo um link para a implantação no Azure. Quando terminar, o comando também exibirá um link para o aplicativo deploy.Este modelo AZD contém arquivos (azure.yaml e o diretório infra ) que geram uma arquitetura segura por padrão com os seguintes recursos do Azure:
- Grupo de recursos: o contêiner para todos os recursos criados.
- Plano do Serviço de Aplicativo: define os recursos de computação para o Serviço de Aplicativo. Um plano Linux na camada B1 é criado.
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
- Rede virtual: integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
- Conta do Azure Cosmos DB com a API do MongoDB: acessível apenas por trás de seu ponto de extremidade privado. Um banco de dados é criado para você no servidor.
- Cache do Azure para Redis: acessível apenas a partir da rede virtual.
- Cofre de chaves: acessível apenas por trás de seu ponto de extremidade privado. Usado para gerenciar segredos para o aplicativo Serviço de Aplicativo.
- Pontos de extremidade privados: pontos de extremidade de acesso para o cofre de chaves, o servidor de banco de dados e o cache Redis na rede virtual.
- Zonas DNS privadas: habilite a resolução DNS do banco de dados do Cosmos DB, do cache Redis e do cofre de chaves na rede virtual.
- Espaço de trabalho do Log Analytics: atua como o contêiner de destino para seu aplicativo enviar seus logs, onde você também pode consultar os logs.
Quando o comando terminar de criar recursos e implantar o código do aplicativo pela primeira vez, o aplicativo de exemplo implantado ainda não funcionará porque você deve fazer pequenas alterações para que ele se conecte ao banco de dados no Azure.
3. Verificar cadeias de conexão
O modelo AZD que você usa gerou as variáveis de conectividade para você já como configurações do aplicativo e as envia para o terminal para sua conveniência. As configurações do aplicativo são uma maneira de manter os segredos de conexão fora do seu repositório de código.
Na saída AZD, localize a configuração
AZURE_COSMOS_CONNECTIONSTRING
do aplicativo . Somente os nomes das configurações são exibidos. Eles se parecem com isso na saída AZD:App Service app has the following app settings: - AZURE_COSMOS_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
AZURE_COSMOS_CONNECTIONSTRING
contém a cadeia de conexão com o banco de dados do Cosmos DB no Azure. Você precisa usá-lo em seu código mais tarde.Para sua conveniência, o modelo AZD mostra o link direto para a página de configurações do aplicativo. Encontre o link e abra-o em uma nova guia do navegador.
Tem problemas? Verifique a seção Solução de problemas.
4. Modifique o código de exemplo e reimplante
No espaço de código do GitHub, inicie uma nova sessão de chat clicando na vista Chat e, em seguida, clicando em +.
Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode apontá-lo para o arquivo app.js e para a
mongoose.connect
chamada.Diga: "Tenho uma variável de cadeia de conexão no Azure chamada AZURE_COSMOS_CONNECTIONSTRING.". O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para você fazer a alteração no app.js.
Abra app.js no explorador e adicione a sugestão de código no
getApp
método.O GitHub Copilot não lhe dá sempre a mesma resposta, talvez seja necessário fazer mais perguntas para ajustar a resposta. Para obter dicas, consulte O que posso fazer com o GitHub Copilot no meu codespace?.
De volta ao terminal codespace, execute
azd deploy
.azd deploy
Gorjeta
Você também pode usar azd up
sempre, o que faz tudo de azd package
, azd provision
e azd deploy
.
Tem problemas? Verifique a seção Solução de problemas.
5. Navegue até o aplicativo
Na saída AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL tem esta aparência na saída AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Adicione algumas tarefas à lista.
Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura ao Azure Cosmos DB.
Tem problemas? Verifique a seção Solução de problemas.
6. Transmitir logs de diagnóstico
O Serviço de Aplicativo do Azure captura todas as mensagens registradas no console para ajudá-lo a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo gera mensagens de log do console em cada um de seus pontos de extremidade para demonstrar esse recurso. Por exemplo, o get
ponto de extremidade emite uma mensagem sobre o número de tarefas recuperadas do banco de dados e uma mensagem de erro aparece se algo der errado.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
Na saída AZD, localize o link para transmitir logs do Serviço de Aplicativo e navegue até ele no navegador. O link tem esta aparência na saída AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Saiba mais sobre como fazer logon em aplicativos Java na série em Habilitar o Azure Monitor OpenTelemetry para aplicativos .NET, Node.js, Python e Java.
Tem problemas? Verifique a seção Solução de problemas.
7. Limpar os recursos
Para excluir todos os recursos do Azure no ambiente de implantação atual, execute azd down
e siga os prompts.
azd down
Resolução de Problemas
- O modo de exibição de implantação do portal para o Azure Cosmos DB mostra um status de Conflito
- A página do navegador do aplicativo implantado diz "Algo deu errado".
O modo de exibição de implantação do portal para o Azure Cosmos DB mostra um status de Conflito
Dependendo da sua assinatura e da região selecionada, você poderá ver o status de implantação do Azure Cosmos DB como Conflict
, com a seguinte mensagem em Detalhes da operação:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
O erro é provavelmente causado por um limite na sua subscrição para a região que selecionar. Tente escolher uma região diferente para sua implantação.
A página do navegador do aplicativo implantado diz "Algo deu errado".
Você provavelmente ainda precisa fazer as alterações na cadeia de conexão no código do aplicativo. Ver 4. Implante o código de exemplo.
Perguntas mais frequentes
- Quanto custa esta configuração?
- Como faço para me conectar ao servidor do Azure Cosmos DB protegido por trás da rede virtual com outras ferramentas?
- Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?
- Por que a implantação do GitHub Actions é tão lenta?
- Não tenho permissões para criar uma identidade atribuída pelo utilizador
- O que posso fazer com o GitHub Copilot no meu codespace?
Quanto custa esta configuração?
O preço dos recursos criados é o seguinte:
- O plano do Serviço de Aplicativo é criado na camada Básica e pode ser dimensionado para cima ou para baixo. Consulte Preços do Serviço de Aplicativo.
- O servidor Azure Cosmos DB é criado em uma única região e pode ser distribuído para outras regiões. Consulte Preços do Azure Cosmos DB.
- A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte Preços da Rede Virtual do Azure.
- A zona DNS privada incorre em uma pequena cobrança. Consulte Preços do DNS do Azure.
Como faço para me conectar ao servidor do Azure Cosmos DB protegido por trás da rede virtual com outras ferramentas?
- Para acesso básico a partir de uma ferramenta de linha de comando, você pode executar
mongosh
a partir do terminal SSH do aplicativo. O contêiner do aplicativo não vem commongosh
, então você deve instalá-lo manualmente. Lembre-se de que o cliente instalado não persiste nas reinicializações do aplicativo. - Para se conectar a partir de um cliente GUI do MongoDB, sua máquina deve estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure conectada a uma das sub-redes ou uma máquina em uma rede local que tenha uma conexão VPN site a site com a rede virtual do Azure.
- Para se conectar a partir do shell do MongoDB a partir da página de gerenciamento do Azure Cosmos DB no portal, sua máquina também deve estar dentro da rede virtual. Em vez disso, você pode abrir o firewall do servidor Azure Cosmos DB para o endereço IP da sua máquina local, mas isso aumenta a superfície de ataque para sua configuração.
Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?
Tome o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push
um inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório GitHub, você faz com que as atualizações desejadas o enviem para o GitHub. Por exemplo:
git add .
git commit -m "<some-message>"
git push origin main
Por que a implantação do GitHub Actions é tão lenta?
O arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo define a execução de dois trabalhos de compilação e implantação. Como cada trabalho é executado em seu próprio ambiente limpo, o arquivo de fluxo de trabalho garante que o deploy
trabalho tenha acesso aos arquivos do build
trabalho:
- No final do
build
trabalho, carregue arquivos como artefatos. - No início do
deploy
trabalho, baixe os artefatos.
A maior parte do tempo gasto pelo processo de dois trabalhos é gasto carregando e baixando artefatos. Se desejar, você pode simplificar o arquivo de fluxo de trabalho combinando os dois trabalhos em um, o que elimina a necessidade das etapas de upload e download.
Não tenho permissões para criar uma identidade atribuída pelo utilizador
Consulte Configurar a implantação de ações do GitHub a partir do Centro de Implantação.
O que posso fazer com o GitHub Copilot no meu codespace?
Você pode notar que a visualização de bate-papo do GitHub Copilot já estava lá para você quando você criou o espaço de código. Para sua conveniência, incluímos a extensão de chat do GitHub Copilot na definição de contêiner (consulte .devcontainer/devcontainer.json). No entanto, você precisa de uma conta GitHub Copilot (teste gratuito de 30 dias disponível).
Algumas dicas para você quando falar com o GitHub Copilot:
- Em uma única sessão de bate-papo, as perguntas e respostas se baseiam umas nas outras e você pode ajustar suas perguntas para ajustar a resposta obtida.
- Por padrão, o GitHub Copilot não tem acesso a nenhum arquivo em seu repositório. Para fazer perguntas sobre um arquivo, abra o arquivo no editor primeiro.
- Para permitir que o GitHub Copilot tenha acesso a todos os arquivos no repositório ao preparar suas respostas, comece sua pergunta com
@workspace
. Para obter mais informações, veja Use the @workspace agent. - Na sessão de chat, o GitHub Copilot pode sugerir alterações e (com
@workspace
) até mesmo onde fazer as alterações, mas não é permitido fazer as alterações para você. Cabe a você adicionar as alterações sugeridas e testá-las.
Aqui estão algumas outras coisas que você pode dizer para ajustar a resposta que obtém:
- @workspace Onde MONGODB_URI é definido?
- Em que ficheiro devo fazer a alteração?
- Essa alteração quebrará meu aplicativo quando executado localmente?