Implementar uma aplicação Web Node.js + MongoDB no Azure

O Serviço de Aplicações do Azure fornece um serviço de alojamento Na Web altamente dimensionável e com correção automática com o sistema operativo Linux. Este tutorial mostra como criar uma aplicação de Node.js segura no Serviço de Aplicações do Azure que está ligada a uma base de dados do Azure Cosmos DB para MongoDB . Quando tiver terminado, terá uma aplicação Express.js em execução no Serviço de Aplicações do Azure no Linux.

Um diagrama que mostra como a aplicação Express.js será implementada no Serviço de Aplicações do Azure e os dados do MongoDB serão alojados no Azure Cosmos DB.

Este artigo pressupõe que já está familiarizado com Node.js desenvolvimento e tem o Node e o MongoDB instalados localmente. Também precisará de uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.

Aplicação de exemplo

Para acompanhar este tutorial, clone ou transfira a aplicação de exemplo a partir do repositório https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app.

git clone https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app.git

Se quiser executar a aplicação localmente, faça o seguinte:

  • Instale as dependências do pacote ao executar npm install.
  • Copie o .env.sample ficheiro para .env e preencha o valor DATABASE_URL com o URL do MongoDB (por exemplo , mongodb://localhost:27017/).
  • Inicie a aplicação com npm start.
  • Para ver a aplicação, navegue até http://localhost:3000.

1. Criar o Serviço de Aplicações e o Azure Cosmos DB

Neste passo, vai criar os recursos do Azure. Os passos utilizados neste tutorial criam um conjunto de recursos seguros por predefinição que incluem o Serviço de Aplicações e o Azure Cosmos DB para MongoDB. Para o processo de criação, irá especificar:

  • O Nome da aplicação Web. É o nome utilizado como parte do nome DNS da sua aplicação Web sob a forma de https://<app-name>.azurewebsites.net.
  • A Região para executar a aplicação fisicamente no mundo.
  • A pilha de Runtime para a aplicação. É onde seleciona a versão do Node a utilizar para a sua aplicação.
  • O Plano de alojamento da aplicação. É o escalão de preço que inclui o conjunto de funcionalidades e a capacidade de dimensionamento da sua aplicação.
  • O Grupo de Recursos da aplicação. Um grupo de recursos permite-lhe agrupar (num contentor lógico) todos os recursos do Azure necessários para a aplicação.

Inicie sessão no portal do Azure e siga estes passos para criar os recursos do Serviço de Aplicações do Azure.

Passo 1: No portal do Azure:

  1. Introduza "base de dados de aplicações Web" na barra de pesquisa na parte superior do portal do Azure.
  2. Selecione o item com o nome Aplicação Web + Base de Dados no cabeçalho Marketplace . Também pode navegar diretamente para o assistente de criação .

Captura de ecrã a mostrar como utilizar a caixa de pesquisa na barra de ferramentas superior para encontrar o assistente de criação de Aplicações Web + Base de Dados.

Passo 2: Na página Criar Aplicação Web + Base de Dados , preencha o formulário da seguinte forma.

  1. Grupo de Recursos → Selecione Criar novo e utilize um nome de msdocs-expressjs-mongodb-tutorial.
  2. Região → qualquer região do Azure perto de si.
  3. Nomemsdocs-expressjs-mongodb-XYZ em que XYZ é qualquer um dos três carateres aleatórios. Este nome tem de ser exclusivo em todo o Azure.
  4. Pilha de runtimeNode 16 LTS.
  5. Plano de alojamentoBásico. Quando estiver pronto, pode aumentar verticalmente para um escalão de preço de produção mais tarde.
  6. O Azure Cosmos DB para MongoDB está selecionado por predefinição como motor de base de dados. O Azure Cosmos DB é uma base de dados nativa da cloud que oferece uma API compatível com MongoDB a 100%. Tenha em atenção o nome da base de dados que é gerado automaticamente (<app-name-database>). Precisará dela mais tarde.
  7. Selecione Rever + criar.
  8. Após a conclusão da validação, selecione Criar.

Captura de ecrã a mostrar como configurar uma nova aplicação e base de dados no assistente Aplicação Web + Base de Dados.

Passo 3: A implementação demora alguns minutos a ser concluída. Quando a implementação estiver concluída, selecione o botão Ir para recurso . É direcionado diretamente para a aplicação do Serviço de Aplicações, mas são criados os seguintes recursos:

  • Grupo de recursos → O contentor para todos os recursos criados.
  • Plano do Serviço de Aplicações → Define os recursos de computação do Serviço de Aplicações. É criado um plano do Linux no escalão Básico .
  • Serviço de Aplicações → Representa a sua aplicação e é executada no plano do Serviço de Aplicações.
  • A rede virtual → Integrada com a aplicação do Serviço de Aplicações e isola o tráfego de rede de back-end.
  • Ponto final privado → ponto final do Access para o recurso de base de dados na rede virtual.
  • Interface de rede → Representa um endereço IP privado para o ponto final privado.
  • O Azure Cosmos DB para MongoDB → Acessível apenas a partir do ponto final privado. É criada uma base de dados e um utilizador no servidor.
  • Zona DNS privada → Ativa a resolução de DNS do servidor do Azure Cosmos DB na rede virtual.

Captura de ecrã a mostrar o processo de implementação concluído.

2. Configurar a conectividade da base de dados

O assistente de criação já gerou o URI do MongoDB para si, mas a sua aplicação precisa de uma DATABASE_URL variável e de uma DATABASE_NAME variável. Neste passo, vai criar definições de aplicação com o formato de que a sua aplicação precisa.

Passo 1: Na página Serviço de Aplicações, no menu esquerdo, selecione Configuração.

Captura de ecrã a mostrar como abrir a página de configuração no Serviço de Aplicações.

Passo 2: No separador Definições da aplicação da página Configuração , crie uma DATABASE_NAME definição:

  1. Selecione Nova definição da aplicação.
  2. No campo Nome , introduza DATABASE_NAME.
  3. No campo Valor , introduza o nome da base de dados gerada automaticamente a partir do assistente de criação, que se assemelha a msdocs-expressjs-mongodb-XYZ-database.
  4. Selecione OK.

Uma captura de ecrã a mostrar como ver a cadeia de ligação gerada automaticamente.

Passo 3:

  1. Desloque-se para a parte inferior da página e selecione a cadeia de ligação MONGODB_URI. Foi gerado pelo assistente de criação.
  2. No campo Valor , selecione o botão Copiar e cole o valor num ficheiro de texto para o passo seguinte. Está no formato URI da cadeia de ligação do MongoDB.
  3. Selecione Cancelar.

Uma captura de ecrã a mostrar como criar uma definição de aplicação.

Passo 4:

  1. Com os mesmos passos no Passo 2, crie uma definição de aplicação com o nome DATABASE_URL e defina o valor para o que copiou da MONGODB_URI cadeia de ligação (ou seja, mongodb://...).
  2. Na barra de menus na parte superior, selecione Guardar.
  3. Quando lhe for pedido, selecione Continuar.

Captura de ecrã a mostrar como guardar as definições na página de configuração.

3. Implementar código de exemplo

Neste passo, irá configurar a implementação do GitHub com o GitHub Actions. É apenas uma das muitas formas de implementar no Serviço de Aplicações, mas também uma excelente forma de ter uma integração contínua no seu processo de implementação. Por predefinição, todos os git push utilizadores do seu repositório do GitHub iniciarão a ação de compilação e implementação.

Passo 1: Numa nova janela do browser:

  1. Inicie sessão na sua conta do GitHub.
  2. Navegue para https://github.com/Azure-Samples/msdocs-nodejs-mongodb-azure-sample-app.
  3. Selecione Fork.
  4. Selecione Criar fork.

Captura de ecrã a mostrar como criar um fork do repositório do GitHub de exemplo.

Passo 2: Na página do GitHub, abra o Visual Studio Code no browser ao premir a . tecla .

Uma captura de ecrã a mostrar como abrir a experiência do browser Visual Studio Code no GitHub.

Passo 3: No Visual Studio Code no browser, abra a configuração/connection.js no explorador. getConnectionInfo Na função, veja que as definições da aplicação que criou anteriormente para a ligação mongoDB são utilizadas (DATABASE_URL e DATABASE_NAME).

Captura de ecrã a mostrar o Visual Studio Code no browser e um ficheiro aberto.

Passo 4: Novamente na página Serviço de Aplicações, no menu esquerdo, selecione Centro de Implementação.

Uma captura de ecrã a mostrar como abrir o centro de implementação no Serviço de Aplicações.

Passo 5: Na página Centro de Implementação:

  1. Em Origem, selecione GitHub. Por predefinição, o GitHub Actions está selecionado como o fornecedor de compilação.
  2. Inicie sessão na sua conta do GitHub e siga o pedido para autorizar o Azure.
  3. Na Organização, selecione a sua conta.
  4. No Repositório, selecione msdocs-nodejs-mongodb-azure-sample-app.
  5. Em Ramo, selecione principal.
  6. No menu superior, selecione Guardar. O Serviço de Aplicações consolida um ficheiro de fluxo de trabalho no repositório do GitHub escolhido, no .github/workflows diretório.

Uma captura de ecrã a mostrar como configurar CI/CD com o GitHub Actions.

Passo 6: Na página Centro de Implementação:

  1. Selecionar Registos. Já foi iniciada uma execução de implementação.
  2. No item de registo da execução da implementação, selecione Compilar/Implementar Registos.

Uma captura de ecrã a mostrar como abrir registos de implementação no centro de implementação.

Passo 7: É levado para o seu repositório do GitHub e vê que a ação do GitHub está em execução. O ficheiro de fluxo de trabalho define duas fases separadas, compilar e implementar. Aguarde pela execução do GitHub para mostrar o estado Concluído. Demora cerca de 15 minutos.

Uma captura de ecrã a mostrar uma execução do GitHub em curso.

4. Navegue para a aplicação

Passo 1: Na página Serviço de Aplicações:

  1. No menu esquerdo, selecione Descrição Geral.
  2. Selecione o URL da sua aplicação. Também pode navegar diretamente para https://<app-name>.azurewebsites.net.

Uma captura de ecrã a mostrar como iniciar um Serviço de Aplicações a partir do portal do Azure.

Passo 2: Adicione algumas tarefas à lista. Parabéns, está a executar uma aplicação de Node.js baseada em dados segura no Serviço de Aplicações do Azure.

Uma captura de ecrã da aplicação Express.js em execução no Serviço de Aplicações.

5. Transmitir registos de diagnóstico

O Serviço de Aplicações do Azure captura todas as mensagens registadas na consola do para o ajudar a diagnosticar problemas com a sua aplicação. A aplicação de exemplo produz mensagens de registo da consola em cada um dos respetivos pontos finais para demonstrar esta capacidade. Por exemplo, o get ponto final produz uma mensagem sobre o número de tarefas obtidas a partir da base de dados e é apresentada uma mensagem de erro se algo correr mal.

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.');
    });
});

Passo 1: Na página Serviço de Aplicações:

  1. No menu esquerdo, selecione Registos do Serviço de Aplicações.
  2. Em Registo de aplicações, selecione Sistema de Ficheiros.

Uma captura de ecrã a mostrar como ativar registos nativos no Serviço de Aplicações no portal do Azure.

Passo 2: No menu esquerdo, selecione Fluxo de registos. Verá os registos da sua aplicação, incluindo registos e registos da plataforma a partir do contentor.

Uma captura de ecrã a mostrar como ver o fluxo de registos no portal do Azure.

6. Inspecionar ficheiros implementados com o Kudu

O Serviço de Aplicações do Azure fornece uma consola de diagnóstico baseada na Web com o nome Kudu que lhe permite examinar o ambiente de alojamento do servidor para a sua aplicação Web. Com o Kudu, pode ver os ficheiros implementados no Azure, rever o histórico de implementações da aplicação e até abrir uma sessão SSH no ambiente de alojamento.

Passo 1: Na página Serviço de Aplicações:

  1. No menu esquerdo, selecione Ferramentas Avançadas.
  2. Selecione Ir. Também pode navegar diretamente para https://<app-name>.scm.azurewebsites.net.

Uma captura de ecrã a mostrar como navegar para a página Kudu do Serviço de Aplicações.

Passo 2: Na página Kudu, selecione Implementações.

Uma captura de ecrã da página principal na aplicação Kudu SCM a mostrar as diferentes informações disponíveis sobre o ambiente de alojamento.

Se tiver implementado código no Serviço de Aplicações com o Git ou a implementação zip, verá um histórico de implementações da sua aplicação Web.

Captura de ecrã a mostrar o histórico de implementações de uma aplicação do Serviço de Aplicações no formato JSON.

Passo 3: Go back para a home page do Kudu e selecione Site wwwroot.

Captura de ecrã a mostrar o site wwwroot selecionado.

Pode ver a estrutura da pasta implementada e clicar para procurar e ver os ficheiros.

Uma captura de ecrã dos ficheiros implementados no diretório wwwroot.

7. Limpar recursos

Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure ao eliminar o grupo de recursos.

Passo 1: Na barra de pesquisa na parte superior do portal do Azure:

  1. Introduza o nome do grupo de recursos.
  2. Selecione o grupo de recursos.

Uma captura de ecrã a mostrar como procurar e navegar para um grupo de recursos no portal do Azure.

Passo 2: Na página do grupo de recursos, selecione Eliminar grupo de recursos.

Captura de ecrã a mostrar a localização do botão Eliminar Grupo de Recursos no portal do Azure.

Passo 3:

  1. Introduza o nome do grupo de recursos para confirmar a eliminação.
  2. Selecione Eliminar.

Captura de ecrã da caixa de diálogo de confirmação para eliminar um grupo de recursos no portal do Azure. :

Perguntas mais frequentes

Quanto custa esta configuração?

Os preços dos recursos de criação são os seguintes:

Como posso ligar ao servidor do Azure Cosmos DB protegido por trás da rede virtual com outras ferramentas?

  • Para obter acesso básico a partir de uma ferramenta de linha de comandos, pode executar mongosh a partir do terminal SSH da aplicação. O contentor da aplicação não é fornecido com mongosh, pelo que tem de instalá-lo manualmente. Lembre-se de que o cliente instalado não persiste nos reinícios da aplicação.
  • Para ligar a partir de um cliente GUI do MongoDB, o computador tem de estar na rede virtual. Por exemplo, pode ser uma VM do Azure ligada a uma das sub-redes ou uma máquina numa rede no local que tenha uma ligação VPN site a site com a rede virtual do Azure.
  • Para ligar a partir da shell do MongoDB a partir da página de gestão do Azure Cosmos DB no portal, o computador também tem de estar na rede virtual. Em vez disso, pode abrir a firewall do servidor do Azure Cosmos DB para o endereço IP do computador local, mas aumenta a superfície de ataque da configuração.

Como funciona o desenvolvimento de aplicações locais com o GitHub Actions?

Veja o ficheiro de fluxo de trabalho gerado automaticamente a partir do Serviço de Aplicações como exemplo, cada git push um inicia uma nova compilação e execução de implementação. A partir de um clone local do repositório do GitHub, faz com que as atualizações pretendidas o enviem para o GitHub. Por exemplo:

git add .
git commit -m "<some-message>"
git push origin main

Por que motivo a implementação do GitHub Actions é tão lenta?

O ficheiro de fluxo de trabalho gerado automaticamente a partir do Serviço de Aplicações define build-then-deploy, execução de dois trabalhos. Uma vez que cada tarefa é executada no seu próprio ambiente limpo, o ficheiro de fluxo de trabalho garante que a deploy tarefa tem acesso aos ficheiros a build partir da tarefa:

A maior parte do tempo despendido pelo processo de dois trabalhos é gasto a carregar e transferir artefactos. Se quiser, pode simplificar o ficheiro de fluxo de trabalho ao combinar as duas tarefas numa só, o que elimina a necessidade dos passos de carregamento e transferência.

Passos seguintes