Partilhar via


Tutorial: Criar um aplicativo Web Java Spring Boot com o Serviço de Aplicativo do Azure no Linux e no Azure Cosmos DB

Neste tutorial, você aprenderá a criar, configurar e implantar um aplicativo Spring Boot seguro no Serviço de Aplicativo do Azure que se conecta a um banco de dados MongoDB no Azure (na verdade, um banco de dados do Cosmos DB com API do MongoDB). Quando terminar, você terá um aplicativo Java SE em execução no Serviço de Aplicativo do Azure no Linux.

Captura de tela do aplicativo Spring Boot armazenando dados no Cosmos DB.

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 do Spring Boot no Serviço de Aplicativo a partir de um repositório GitHub.
  • Acessa as configurações do aplicativo do 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 de Java com desenvolvimento Spring Framework.
  • (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 de Java com desenvolvimento Spring Framework.
  • (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-spring-boot-mongodb-sample-app
cd msdocs-spring-boot-mongodb-sample-app
azd init --template msdocs-spring-boot-mongodb-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 MongoDB, 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:

  1. Iniciar sessão na sua conta do GitHub.
  2. Navegar para https://github.com/Azure-Samples/msdocs-spring-boot-mongodb-sample-app/fork.
  3. Desmarque Copiar somente a ramificação principal. Você quer todos os ramos.
  4. Selecione Criar bifurcação.

Uma captura de tela mostrando como criar uma bifurcação do repositório GitHub de exemplo.

Passo 2: Na bifurcação do GitHub:

  1. 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.
  2. Selecione Code>Create codespace on starter-no-infra. O codespace leva alguns minutos para ser configurado.

Uma captura de tela mostrando como criar um espaço de código no GitHub.

Passo 3: No terminal codespace:

  1. Execute o mvn package spring-boot:run.
  2. Quando vir a notificação Your application running on port 8080 is available., selecione Abrir no navegador. Você deve ver o aplicativo de exemplo em uma nova guia do navegador. Para parar o servidor Jetty, digite Ctrl+C.

Uma captura de tela mostrando como executar o aplicativo de exemplo dentro do espaço de código GitHub.

Gorjeta

Você pode perguntar ao GitHub Copilot sobre este repositório. Por exemplo:

  • @workspace O que faz este projeto?
  • @workspace Como o aplicativo se conecta ao banco de dados?
  • @workspace O que faz a pasta .devcontainer?

Tem problemas? Verifique a seção Solução de problemas.

2. Criar Serviço de Aplicativo e Cosmos DB

Primeiro, 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 o processo de criação, você especifica:

  • 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 Java 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:

  1. Insira "banco de dados de aplicativo Web" na barra de pesquisa na parte superior do portal do Azure.
  2. Selecione o item rotulado Web App + Database sob o título Marketplace . Você também pode navegar diretamente para o assistente de criação.

Uma captura de tela mostrando como usar a caixa de pesquisa na barra de ferramentas superior para localizar o assistente de criação de aplicativo Web + banco de dados.

Etapa 2: Na página Criar Aplicativo Web + Banco de Dados , preencha o formulário da seguinte maneira.

  1. Grupo de recursos: Selecione Criar novo e use um nome de msdocs-spring-cosmosdb-tutorial.
  2. Região: qualquer região do Azure perto de você.
  3. Nome: msdocs-spring-cosmosdb-XYZ onde XYZ é qualquer três caracteres aleatórios. Este nome tem de ser exclusivo em todo o Azure.
  4. Pilha de tempo de execução: Java 21.
  5. Pilha de servidores web Java: Java SE (Embedded Web Server).
  6. Motor: API do Cosmos DB para MongoDB. O Cosmos DB é um banco de dados NoSQL, relacional e vetorial totalmente gerenciado como um serviço no Azure.
  7. Plano de hospedagem: Básico. Quando estiver pronto, você poderá escalar para um nível de preço de produção.
  8. Selecione Rever + criar.
  9. Após a conclusão da validação, selecione Criar.

Uma captura de tela mostrando como configurar um novo aplicativo e banco de dados no assistente Aplicativo Web + Banco de Dados.

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.
  • Rede virtual: integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
  • Azure Cosmos DB: Acessível apenas por trás de seu ponto de extremidade privado. Um banco de dados é criado para você na conta do banco de dados.
  • Pontos de extremidade privados: pontos de extremidade de acesso para o servidor de banco de dados e o cache Redis na rede virtual.
  • Zonas DNS privadas: habilite a resolução DNS do servidor de banco de dados e do cache Redis na rede virtual.

Uma captura de tela mostrando o processo de implantação concluído.

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:

  1. No menu à esquerda, selecione Configurações > Variáveis de ambiente.
  2. 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.

Uma captura de tela mostrando como ver o valor de uma configuração de aplicativo.

Passo 2: Crie um cofre de chaves para a gestão segura de segredos.

  1. Na barra de pesquisa superior, digite "cofre de chaves" e selecione Cofre de chaves do Marketplace>.
  2. Em Grupo de Recursos, selecione msdocs-spring-cosmosdb-tutorial.
  3. Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
  4. Em Região, defina-o como o local de exemplo como o grupo de recursos.

Uma captura de tela mostrando como criar um cofre de chaves.

Passo 3:

  1. Selecione o separador Rede.
  2. Desmarque Ativar acesso público.
  3. Selecione Criar um ponto de extremidade privado.
  4. Em Grupo de Recursos, selecione msdocs-spring-cosmosdb-tutorial.
  5. Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
  6. Em Região, defina-o como o local de exemplo como o grupo de recursos.
  7. Na caixa de diálogo, em Local, selecione o mesmo local do seu aplicativo do Serviço de Aplicativo.
  8. Em Grupo de Recursos, selecione msdocs-spring-cosmosdb-tutorial.
  9. Em Nome, digite msdocs-spring-cosmosdb-XYZVaultEndpoint.
  10. Em Rede virtual, selecione msdocs-spring-cosmosdb-XYZVnet.
  11. Em Sub-rede, msdocs-spring-cosmosdb-XYZSubnet.
  12. Selecione OK.
  13. 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".

Uma captura de tela mostrando como proteger um cofre de chaves com um ponto de extremidade privado.

Passo 4:

  1. Na barra de pesquisa superior, digite msdocs-spring-cosmosdb e, em seguida, o recurso do Serviço de Aplicativo chamado msdocs-spring-cosmosdb-XYZ.
  2. 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ê.
  3. Marque a caixa de seleção ao lado do conector e selecione Editar.
  4. Na guia Noções básicas, defina Tipo de cliente como SpringBoot. Esta opção cria as variáveis de ambiente específicas do Spring Boot para você.
  5. Selecione a guia Autenticação .
  6. Selecione Armazenar segredo no Cofre da chave.
  7. 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.

Uma captura de tela mostrando como editar um conector de serviço com uma conexão de cofre de chaves.

Etapa 5: Na caixa de diálogo Criar conexão para a conexão do Cofre da Chave:

  1. No Cofre de Chaves, selecione o cofre de chaves criado anteriormente.
  2. Selecione Rever + Criar. Você verá que a identidade gerenciada atribuída ao sistema está definida como Selecionada.
  3. Quando a validação for concluída, selecione Criar.

Uma captura de tela mostrando como configurar um conector de serviço do cofre de chaves.

Etapa 6: Você está de volta na caixa de diálogo de edição para defaultConnector.

  1. 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.
  2. Selecione Next: Networking.
  3. 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.
  4. Selecione Guardar. Aguarde até que a notificação Atualização bem-sucedida seja exibida.

Uma captura de tela mostrando a conexão do cofre de chaves selecionada no defaultConnector.

Passo 7: Para verificar as alterações:

  1. No menu à esquerda, selecione Variáveis de ambiente novamente.
  2. Verifique se a configuração do aplicativo spring.data.mongodb.uri existe. O conector padrão o gerou para você, e seu aplicativo Spring Boot já usa a variável.
  3. Ao lado da 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.

Uma captura de tela mostrando como ver o valor da variável de ambiente Spring Boot no Azure.

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.

Uma captura de tela mostrando como abrir o centro de implantação no Serviço de Aplicativo.

Etapa 2: Na página Centro de Implantação:

  1. Em Source, selecione GitHub. Por padrão, as Ações do GitHub são selecionadas como o provedor de compilação.
  2. Entre na sua conta do GitHub e siga o prompt para autorizar o Azure.
  3. Em Organização, selecione sua conta.
  4. No Repositório, selecione msdocs-spring-boot-mongodb-sample-app.
  5. 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.
  6. Em Tipo de autenticação, selecione Identidade atribuída pelo usuário.
  7. 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.

Uma captura de tela mostrando como configurar o CI/CD usando as Ações do GitHub.

Passo 3:

  1. Selecione a guia Logs . Veja se uma nova implantação já foi executada, mas o status é Falha.
  2. Selecione Compilar/Implantar logs. Uma guia do navegador é aberta na guia Ações do seu repositório bifurcado no GitHub. Em Anotações, você vê o erro The string 'java21' is not valid SeVer notation for a Java version. Se desejar, selecione a etapa de compilação com falha na página para obter mais informações.

Uma captura de tela mostrando um erro na página Logs do centro de implantação.

Etapa 4: O erro mostra que algo deu errado durante o fluxo de trabalho do GitHub. Para corrigi-lo, puxe as alterações mais recentes para o seu espaço de código primeiro. De volta ao espaço de código do GitHub da 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.

Uma captura de tela mostrando o git pull dentro de um espaço de código do GitHub.

Passo 5 (Opção 1: com o GitHub Copilot):

  1. Inicie uma nova sessão de chat selecionando a vista Chat e, em seguida, selecionando +.
  2. Pergunte: "@workspace Por que recebo o erro nas ações do GitHub: A string 'java21' não é notação SemVer válida para uma versão Java." Copilot pode dar-lhe uma explicação e até mesmo dar-lhe o link para o arquivo de fluxo de trabalho que você precisa corrigir.
  3. Abra .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml no explorador e faça a correção sugerida. 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?.

Uma captura de tela mostrando como fazer uma pergunta em uma nova sessão de bate-papo do GitHub Copilot.

Passo 5 (Opção 2: sem o Copilot do GitHub):

  1. Abra .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml no explorador e encontre a setup-java@v4 ação.
  2. Altere o valor de java-version para '21'.

Uma captura de tela mostrando um espaço de código do GitHub e o arquivo de fluxo de trabalho gerado automaticamente aberto.

Passo 6:

  1. Selecione a extensão Controle do código-fonte.
  2. Na caixa de texto, digite uma mensagem de confirmação como Fix error in java-version. Ou selecione e deixe o GitHub Copilot gerar uma mensagem de confirmação para você.
  3. Selecione Confirmar e, em seguida, confirme com Sim.
  4. Selecione Sincronizar alterações 1 e, em seguida, confirme com OK.

Uma captura de tela mostrando as alterações que estão sendo confirmadas e enviadas por push para o GitHub.

Etapa 7: De volta à página Centro de Implantação no portal do Azure:

  1. Na guia Logs, selecione Atualizar. Uma nova execução de implantação já foi iniciada a partir de suas alterações confirmadas.
  2. 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.

Uma captura de tela mostrando uma implantação bem-sucedida na página Logs do centro de implantação.

Etapa 8: 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.

Uma captura de tela mostrando uma execução bem-sucedida do GitHub.

Tem problemas? Verifique a seção Solução de problemas.

5. Navegue até o aplicativo

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Visão geral.
  2. Selecione o URL do seu aplicativo.

Uma captura de tela mostrando como iniciar um Serviço de Aplicativo a partir do portal do Azure.

Passo 2: 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.

Uma captura de tela do aplicativo Web Spring Boot com o Cosmos DB em execução no Azure.

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 enviadas para o console para ajudá-lo a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo inclui instruções de log Log4j padrão para demonstrar essa capacidade, conforme mostrado no trecho a seguir:

private static Logger logger = LoggerFactory.getLogger(TodoListController.class);

@Autowired
private TodoItemRepository todoItemRepository;

public TodoListController() {
}

/**
 * HTTP GET
 */
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
    logger.info("GET request access '/api/todolist/{}' path.", index);
    return todoItemRepository.findById(index).get();
}

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Logs do Serviço de Aplicativo.
  2. Em Registo de aplicações, selecione Sistema de ficheiros.
  3. No menu superior, selecione Salvar.

Uma captura de tela mostrando como habilitar logs nativos no Serviço de Aplicativo no portal do Azure.

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.

Uma captura de tela mostrando como exibir o fluxo de log no portal do Azure.

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

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:

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

Uma captura de tela mostrando como pesquisar e navegar para um grupo de recursos no portal do Azure.

Etapa 2: na página do grupo de recursos, selecione Excluir grupo de recursos.

Uma captura de tela mostrando o local do botão **Excluir Grupo de Recursos** no portal do Azure.

Passo 3:

  1. Confirme sua exclusão digitando o nome do grupo de recursos.
  2. Selecione Eliminar.
  3. Confirme com Excluir novamente.

Uma captura de tela da caixa de diálogo de confirmação para excluir um grupo de recursos no portal do Azure.

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).

  1. A partir da raiz do repositório, execute azd init.

    azd init --template javase-app-service-cosmos-redis-infra
    
  2. 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.
  3. Entre no Azure executando o azd auth login comando e seguindo o prompt:

    azd auth login
    
  4. 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.

Tem problemas? Verifique a seção Solução de problemas.

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.

  1. Na saída AZD, localize a configuração spring.data.mongodb.urido 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:
             - spring.data.mongodb.uri
             - spring.data.mongodb.database
             - spring.redis.host
             - spring.redis.port
             - spring.redis.password
             - spring.redis.database
             - spring.redis.ssl
             - spring.cloud.azure.keyvault.secret.credential.managed_identity_enabled
             - spring.cloud.azure.keyvault.secret.endpoint
             - azure.keyvault.uri
             - azure.keyvault.scope
     

    spring.data.mongodb.uri contém o URI de conexão com o banco de dados do Cosmos DB no Azure. É uma variável padrão do Spring Data, que seu aplicativo já está usando no arquivo src/main/resources/application.properties .

  2. No explorador, navegue até src/main/resources/application.properties e veja que seu aplicativo Spring Boot já está usando a spring.data.mongodb.uri variável para acessar dados.

  3. Para sua conveniência, a saída do modelo AZD mostra o link direto para a página de configurações do aplicativo do aplicativo. Encontre o link e abra-o em uma nova guia do navegador.

    Se você olhar para o valor de , ele deve ser @Microsoft.KeyVault(...), o que significa que é uma referência de cofre de chaves porque o segredo é gerenciado no cofre de spring.data.mongodb.urichaves.

Tem problemas? Verifique a seção Solução de problemas.

4. Navegue até o aplicativo

  1. 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/
     
  2. Adicione algumas tarefas à lista.

    Uma captura de tela do aplicativo Web Tomcat com o MySQL em execução no Azure mostrando tarefas.

    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.

5. Transmitir logs de diagnóstico

O Serviço de Aplicativo do Azure pode capturar logs do console para ajudá-lo a diagnosticar problemas com seu aplicativo. Por conveniência, o modelo AZD já habilitava o registro no sistema de arquivos local e está enviando os logs para um espaço de trabalho do Log Analytics.

O aplicativo de exemplo inclui instruções de log Log4j padrão para demonstrar essa capacidade, conforme mostrado no trecho a seguir:

private static Logger logger = LoggerFactory.getLogger(TodoListController.class);

@Autowired
private TodoItemRepository todoItemRepository;

public TodoListController() {
}

/**
 * HTTP GET
 */
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
    logger.info("GET request access '/api/todolist/{}' path.", index);
    return todoItemRepository.findById(index).get();
}

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.

6. 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

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.

O aplicativo de exemplo implantado não mostra o aplicativo de lista de tarefas

Se você vir uma Hey, Java developers! página em vez do aplicativo de lista de tarefas, o Serviço de Aplicativo provavelmente ainda está carregando o contêiner atualizado da implantação de código mais recente. Aguarde alguns minutos e atualize a página.

Perguntas mais frequentes

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.
  • A conta do Azure Cosmos DB é criada na camada Serverless e há um pequeno custo associado a essa camada. Consulte Preços do Azure Cosmos DB.
  • O Cache Redis do Azure é criado na camada Básica com o tamanho mínimo do cache. Há um pequeno custo associado a este nível. Você pode dimensioná-lo para níveis de desempenho mais altos para maior disponibilidade, clustering e outros recursos. Consulte Preços do Cache do Azure para Redis.
  • 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 executar a migração de banco de dados com o banco de dados Cosmos DB por trás da rede virtual?

O contêiner Java SE no Serviço de Aplicativo já tem conectividade de rede com o Cosmos DB, mas não contém nenhuma ferramenta de migração ou outras ferramentas do MongoDB. Você tem algumas opções:

  • Execute migrações de banco de dados automaticamente no início do aplicativo, como com o Hibernate e/ou o Flyway.
  • Na sessão SSH do aplicativo, instale uma ferramenta de migração como a CLI do Flyway e execute o script de migração. Lembre-se de que a ferramenta instalada não persistirá após a reinicialização de um aplicativo, a menos que esteja no diretório /home .
  • Integre o shell de nuvem do Azure com a rede virtual e execute migrações de banco de dados a partir daí.

Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?

Usando 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 as atualizações desejadas e envia por push para o GitHub. Por exemplo:

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

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.

Próximos passos

Saiba mais sobre como executar aplicativos Java no Serviço de Aplicativo no guia do desenvolvedor.

Saiba como proteger seu aplicativo com um domínio e um certificado personalizados.