Eventos
Aceite o Desafio do Microsoft Learn
19 de nov., 23 - 10 de jan., 23
Ignite Edition - Desenvolva habilidades no Microsoft Azure e ganhe um selo digital até 10 de janeiro!
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Neste tutorial, você vai 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 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.
Neste tutorial, você aprenderá a:
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
Primeiro, você configura um aplicativo de exemplo baseado em dados como um ponto de partida. Para sua conveniência, o repositório de amostra inclui uma configuração de contêiner de desenvolvimento. O contêiner de desenvolvimento tem tudo de 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 a amostra de aplicativo. O contêiner de desenvolvimento pode ser executado em um codespace do GitHub, o que significa que você pode executar o exemplo em qualquer computador com um navegador da Web.
Etapa 1: em uma nova janela do navegador:
Etapa 2: na bifurcação do GitHub:
Etapa 3: No terminal do codespace:
mvn package spring-boot:run
.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
.Dica
Você pode perguntar ao GitHub Copilot sobre esse repositório. Por exemplo:
Está enfrentando problemas? Confira a seção de Solução de problemas.
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ê especificará:
https://<app-name>-<hash>.<region>.azurewebsites.net
.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:
Etapa 2: na página Criar aplicativo Web + Banco de dados, preencha o formulário conforme mostrado a seguir.
Etapa 3: a implantação leva alguns minutos para ser concluída. Depois que 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:
Está enfrentando problemas? Confira a seção de Solução de problemas.
O assistente de criação gerou a cadeia de caracteres de conectividade para você já como uma configuração de aplicativo. No entanto, a melhor prática de segurança é manter os segredos fora do Serviço de Aplicativo completamente. Você moverá seus segredos para um cofre de chaves e alterará a configuração do aplicativo para uma referência do Key Vault com a ajuda dos Conectores de Serviço.
Etapa 1: na página Serviço de Aplicativo:
Etapa 2: Criar um cofre de chaves para o gerenciamento seguro de segredos.
Etapa 3:
Etapa 4:
Etapa 5: Na caixa de diálogo Criar conexão para a conexão do Cofre de Chaves:
Etapa 6: Você está de volta à caixa de diálogo de edição para o defaultConnector.
Etapa 7: para verificar suas alterações:
@Microsoft.KeyVault(...)
, o que significa que é uma referência do cofre de chaves, porque o segredo agora é gerenciado no cofre de chaves.Está enfrentando problemas? Confira a seção de Solução de problemas.
Nesta etapa, você configurará a implantação do GitHub usando o GitHub Actions. É 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
em seu repositório GitHub inicia a ação de compilação e implantação.
Etapa 1: No menu à esquerda, selecione Implantação>Centro de implantação.
Etapa 2: na página Centro de Implantação:
.github/workflows
.
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 alternativas de autenticação, consulte Implantar no Serviço de Aplicativo usando o GitHub Actions.Etapa 3:
The string 'java21' is not valid SeVer notation for a Java version
. Se quiser, selecione a etapa da compilação com falha na página para obter mais informações.Etapa 4: O erro mostra que algo deu errado durante o fluxo de trabalho do GitHub. Para corrigir, primeiro efetue pull das alterações mais recentes para o seu codespace. De volta ao codespace do GitHub da sua amostra de bifurcação, execute git pull origin starter-no-infra
.
Isso puxa o arquivo de fluxo de trabalho recém-confirmado para o seu codespace.
Etapa 5 (Opção 1: Com o GitHub Copilot):
Etapa 5 (Opção 2: Sem o GitHub Copilot):
setup-java@v4
.java-version
para '21'
.Etapa 6:
Fix error in java-version
. Ou selecione e permita que o GitHub Copilot gere uma mensagem de confirmação para você.Etapa 7: de volta à página Centro de Implantação no portal do Azure:
Etapa 8: você será levado para o repositório do GitHub e verá que a ação do GitHub está em execução. O arquivo do fluxo de trabalho define dois estágios separados, compilar e implantar. Aguarde a execução do GitHub para mostrar um status de Concluído.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Etapa 1: na página Serviço de Aplicativo:
Etapa 2: adicione algumas tarefas à lista. Parabéns! Você está executando um aplicativo web no Serviço de Aplicativo do Azure, com uma conectividade segura com o Azure Cosmos DB.
Está enfrentando problemas? Confira a seção de Solução de problemas.
O Serviço de Aplicativo do Azure captura todas as mensagens geradas no console para ajudar você a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo inclui instruções de log padrão do Log4j para demonstrar essa funcionalidade, conforme mostrado no snippet 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:
Etapa 2: no menu esquerdo, selecione Fluxo de log. Você verá os logs do seu aplicativo, incluindo os logs de plataforma e os logs de dentro do contêiner.
Saiba mais sobre o registro em log em aplicativos Java na série em Habilitar o OpenTelemetry do Azure Monitor para aplicativos.NET, Node.js, Python e Java.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Quando tiver terminado, você poderá excluir todos os recursos de sua assinatura do Azure ao excluir o grupo de recursos.
Etapa 1: na barra de pesquisa, na parte superior do portal do Azure:
Etapa 2: na página Grupo de recursos, selecione Excluir grupo de recursos.
Etapa 3:
Nesta etapa, você criará os recursos do Azure e implantará um aplicativo de amostra 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).
Na raiz do repositório, execute azd init
.
azd init --template javase-app-service-cosmos-redis-infra
Quando solicitado, dê as seguintes respostas:
Pergunta | Resposta |
---|---|
O diretório atual não está vazio. Deseja inicializar um projeto aqui em “<seu diretório>”? | S |
O que você gostaria de fazer com esses arquivos? | Manter meus arquivos existentes inalterados |
Insira um novo nome do ambiente | Digite um nome exclusivo. O modelo do 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ífens. |
Entre em sua conta do Azure usando o comando azd auth login
e seguindo o prompt:
azd auth login
Crie os recursos necessários do Azure e implante o código do aplicativo com o comando azd up
. Siga o prompt para selecionar a assinatura e o local desejados para os recursos do Azure.
azd up
O comando azd up
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á seu código posteriormente para trabalhar com o Serviço de Aplicativo. Durante a execução, o comando fornece mensagens sobre o processo de provisionamento e implantação, incluindo um link para a implantação no Azure. Quando ele é concluído, o comando também exibe um link para o aplicativo de implantação.
Esse modelo do 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:
Está enfrentando problemas? Confira a seção de Solução de problemas.
O modelo do AZD que você usa já gerou as variáveis de conectividade 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ódigos.
Na saída do AZD, localize as configurações do aplicativo spring.data.mongodb.uri
. Somente os nomes da configuração são exibidos. Elas têm esta aparência na saída do 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 Cosmos DB no Azure. Trata-se de uma variável padrão do Spring Data que seu aplicativo já está usando no arquivo src/main/resources/application.properties.
No explorer, navegue até src/main/resources/application.properties e veja que seu aplicativo Spring Boot já está usando a variável spring.data.mongodb.uri
para acessar dados.
Para sua conveniência, a saída do modelo do AZD mostra o link direto para a página de configurações do aplicativo. Localize o link e abra-o em uma nova guia do navegador.
Se você observar o valor de spring.data.mongodb.uri
, deverá ser @Microsoft.KeyVault(...)
, o que significa que é uma referência do cofre de chaves porque o segredo é gerenciado no cofre de chaves.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Na saída do AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL fica assim na saída do 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 uma conectividade segura com o Azure Cosmos DB.
Está enfrentando problemas? Confira a seção de Solução de problemas.
O Serviço de Aplicativo do Azure pode capturar logs de console para ajudá-lo a diagnosticar problemas com o aplicativo. Por conveniência, o modelo do AZD já habilitou o registro em log ao sistema de arquivos local e está enviando para um workspace do Log Analytics.
O aplicativo de exemplo inclui instruções de log padrão do Log4j para demonstrar essa funcionalidade, conforme mostrado no snippet 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 do 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 do 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 o registro em log em aplicativos Java na série em Habilitar o OpenTelemetry do Azure Monitor para aplicativos.NET, Node.js, Python e Java.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Para excluir todos os recursos do Azure no ambiente de implantação atual, execute azd down
e siga os prompts.
azd down
Dependendo da sua assinatura e da região que selecionar, você talvez veja o status de implantação do Azure Cosmos DB como Conflict
, com a seguinte mensagem nos detalhes da Operação:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
Esse erro provavelmente é causado por um limite da sua assinatura para a região que você selecionou. Tente escolher uma região diferente para sua implantação.
Se você vir uma página Hey, Java developers!
em vez do aplicativo de lista de tarefas, o Serviço de Aplicativo provavelmente ainda estará carregando o contêiner atualizado da implantação de código mais recente. Aguarde alguns minutos e atualize a página.
O preço dos recursos criados são os seguintes:
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:
Usando como exemplo o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo, cada git push
inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório do GitHub, você faz as atualizações desejadas e efetua push para o GitHub. Por exemplo:
git add .
git commit -m "<some-message>"
git push origin main
Consulte Configurar a implantação do GitHub Actions no Centro de Implantação.
Você deve ter percebido que o modo de exibição de chat do GitHub Copilot já estava lá quando você criou o codespace. Para sua conveniência, incluímos a extensão de chat do GitHub Copilot na definição de contêiner (confira .devcontainer/devcontainer.json). No entanto, você precisa de uma conta do GitHub Copilot (avaliação gratuita de 30 dias disponível).
Algumas dicas para você ao falar com o GitHub Copilot:
@workspace
. Para obter mais informações, consulte Use the @workspace agent.@workspace
) até mesmo onde fazer as alterações, mas não tem permissão para fazer as alterações para você. Cabe a você adicionar as alterações sugeridas e testá-las.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.
Eventos
Aceite o Desafio do Microsoft Learn
19 de nov., 23 - 10 de jan., 23
Ignite Edition - Desenvolva habilidades no Microsoft Azure e ganhe um selo digital até 10 de janeiro!
Registrar agoraDocumentação
Início Rápido: Criar um aplicativo Java no Serviço de Aplicativo do Azure - Azure App Service
Implante seu primeiro Olá, Mundo em Java no Serviço de Aplicativo do Azure em minutos. O Plug-in de Aplicativo Web do Azure para Maven torna-o conveniente para implantar aplicativos Java.
Tutorial: Aplicativo Java Linux com Tomcat e MySQL - Azure App Service
Saiba como fazer com que um aplicativo Linux Tomcat controlado por dados funcione no Serviço de Aplicativo do Azure, com conexão com um MySQL em execução no Azure.
Este tutorial orienta você pelas etapas de implantar um aplicativo Spring Boot como um aplicativo Web do Linux no Microsoft Azure.