gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
In deze zelfstudie leert u hoe u een beveiligde Spring Boot-toepassing bouwt, configureert en implementeert in Azure-app Service die verbinding maakt met een MongoDB-database in Azure (eigenlijk een Cosmos DB-database met MongoDB-API). Wanneer u klaar bent, hebt u een Java SE-toepassing die wordt uitgevoerd op Azure-app Service in Linux.
In deze zelfstudie leert u het volgende:
U kunt de voorbeeld-app snel implementeren in deze zelfstudie en zien hoe deze wordt uitgevoerd in Azure. Voer de volgende opdrachten uit in Azure Cloud Shell en volg de 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
Eerst stelt u een voorbeeld van een gegevensgestuurde app in als uitgangspunt. Voor uw gemak bevat de voorbeeldopslagplaats een dev-containerconfiguratie . De dev-container heeft alles wat u nodig hebt om een toepassing te ontwikkelen, waaronder de MongoDB-database, cache en alle omgevingsvariabelen die nodig zijn voor de voorbeeldtoepassing. De dev-container kan worden uitgevoerd in een GitHub-coderuimte, wat betekent dat u het voorbeeld kunt uitvoeren op elke computer met een webbrowser.
Stap 1: In een nieuw browservenster:
Stap 2: In de GitHub-fork:
Stap 3: In de codespace-terminal:
mvn package spring-boot:run
uit.Your application running on port 8080 is available.
ziet, selecteert u Openen in browser.
U ziet de voorbeeldtoepassing in een nieuw browsertabblad. Als u de Jetty-server wilt stoppen, typt Ctrl
+C
u .Tip
U kunt GitHub Copilot vragen over deze opslagplaats. Voorbeeld:
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
Eerst maakt u de Azure-resources. Met de stappen die in deze zelfstudie worden gebruikt, maakt u een set beveiligde standaardbronnen met App Service en Azure Cosmos DB. Voor het aanmaakproces geeft u het volgende op:
https://<app-name>-<hash>.<region>.azurewebsites.net
.Meld u aan bij Azure Portal en volg deze stappen om uw Azure-app Service-resources te maken.
Stap 1: In Azure Portal:
Stap 2: Vul op de pagina Web-app en database maken het formulier als volgt in.
Stap 3: Het duurt enkele minuten voordat de implementatie is voltooid. Zodra de implementatie is voltooid, selecteert u de knop Ga naar resource . U wordt rechtstreeks naar de App Service-app gebracht, maar de volgende resources worden gemaakt:
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
De wizard Voor het maken is de verbindingsreeks voor u gegenereerd als app-instelling. De aanbevolen beveiligingsprocedures zijn echter om geheimen volledig buiten App Service te houden. U verplaatst uw geheimen naar een sleutelkluis en wijzigt uw app-instelling in een Key Vault-verwijzing met behulp van serviceconnectors.
Stap 1: Op de App Service-pagina:
Stap 2: Een sleutelkluis maken voor veilig beheer van geheimen.
Stap 3:
Stap 4:
Stap 5: In het dialoogvenster Verbinding maken voor de Key Vault-verbinding:
Stap 6: U bent terug in het bewerkingsdialoogvenster voor defaultConnector.
Stap 7: Uw wijzigingen controleren:
@Microsoft.KeyVault(...)
, wat betekent dat het een sleutelkluisverwijzing is omdat het geheim nu wordt beheerd in de sleutelkluis.Ondervindt u problemen? Controleer de sectie Probleemoplossing.
In deze stap configureert u gitHub-implementatie met behulp van GitHub Actions. Het is slechts een van de vele manieren om te implementeren in App Service, maar ook een uitstekende manier om continue integratie in uw implementatieproces te hebben. Standaard wordt met elke git push
gitHub-opslagplaats de build- en implementatieactie gestart.
Stap 1: Selecteer implementatiecentrum in>het linkermenu.
Stap 2: Op de pagina Implementatiecentrum:
.github/workflows
map.
Standaard maakt het implementatiecentrum een door de gebruiker toegewezen identiteit voor de werkstroom voor verificatie met behulp van Microsoft Entra (OIDC-verificatie). Zie Implementeren in App Service met behulp van GitHub Actions voor alternatieve verificatieopties.Stap 3:
The string 'java21' is not valid SeVer notation for a Java version
. Als u wilt, selecteert u de mislukte build-stap op de pagina voor meer informatie.
Stap 4: De fout laat zien dat er iets is misgegaan tijdens de GitHub-werkstroom. U kunt dit probleem oplossen door eerst de meest recente wijzigingen in uw codespace op te halen. Voer in de GitHub-coderuimte van uw voorbeeldfork uit git pull origin starter-no-infra
.
Hiermee haalt u het zojuist vastgelegde werkstroombestand op in uw codespace.
Stap 5 (optie 1: met GitHub Copilot):
Stap 5 (optie 2: zonder GitHub Copilot):
setup-java@v4
actie.java-version
in '21'
.Stap 6:
Fix error in java-version
. Of selecteer Stap 7: Terug op de pagina Implementatiecentrum in Azure Portal:
Stap 8: U gaat naar uw GitHub-opslagplaats en ziet dat de GitHub-actie wordt uitgevoerd. Het werkstroombestand definieert twee afzonderlijke fasen, bouwen en implementeren. Wacht totdat de GitHub-uitvoering de status Voltooid weergeeft.
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
Stap 1: Op de App Service-pagina:
Stap 2: Voeg een paar taken toe aan de lijst. Gefeliciteerd, u voert een web-app uit in Azure-app Service, met beveiligde connectiviteit met Azure Cosmos DB.
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
Azure-app Service legt alle berichtenuitvoer vast in de console om u te helpen bij het vaststellen van problemen met uw toepassing. De voorbeeldtoepassing bevat standaard log4j-logboekregistratieinstructies om deze mogelijkheid te demonstreren, zoals wordt weergegeven in het volgende codefragment:
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();
}
Stap 1: Op de App Service-pagina:
Stap 2: Selecteer in het menu links de optie Logboekstream. U ziet de logboeken voor uw app, inclusief platformlogboeken en logboeken vanuit de container.
Meer informatie over logboekregistratie in Java-apps in de reeks over Azure Monitor OpenTelemetry inschakelen voor .NET, Node.js, Python- en Java-toepassingen.
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
Wanneer u klaar bent, kunt u alle resources uit uw Azure-abonnement verwijderen door de resourcegroep te verwijderen.
Stap 1: In de zoekbalk boven aan Azure Portal:
Stap 2: Selecteer op de pagina Resourcegroep verwijderen.
Stap 3:
In deze stap maakt u de Azure-resources en implementeert u een voorbeeld-app in App Service op Linux. Met de stappen die in deze zelfstudie worden gebruikt, maakt u een set beveiligde standaardbronnen met App Service en Azure Cosmos DB.
De dev-container heeft al de Azure Developer CLI (AZD).
Voer vanuit de hoofdmap van de opslagplaats de opdracht uit azd init
.
azd init --template javase-app-service-cosmos-redis-infra
Geef de volgende antwoorden wanneer u hierom wordt gevraagd:
Vraag | Antwoord |
---|---|
De huidige map is niet leeg. Wilt u hier een project initialiseren in '<your-directory>'? | Y |
Wat wilt u doen met deze bestanden? | Mijn bestaande bestanden ongewijzigd houden |
Voer een nieuwe omgevingsnaam in | Typ een unieke naam. De AZD-sjabloon gebruikt deze naam als onderdeel van de DNS-naam van uw web-app in Azure (<app-name>-<hash>.azurewebsites.net ). Alfanumerieke tekens en afbreekstreepjes zijn toegestaan. |
Meld u aan bij Azure door de azd auth login
opdracht uit te voeren en de prompt te volgen:
azd auth login
Maak de benodigde Azure-resources en implementeer de app-code met de azd up
opdracht. Volg de prompt om het gewenste abonnement en de gewenste locatie voor de Azure-resources te selecteren.
azd up
Het duurt ongeveer 15 minuten voordat de azd up
opdracht is voltooid (de Redis-cache duurt het de meeste tijd). Uw toepassingscode wordt ook gecompileerd en geïmplementeerd, maar u wijzigt de code later om met App Service te werken. Terwijl deze wordt uitgevoerd, bevat de opdracht berichten over het inrichtings- en implementatieproces, inclusief een koppeling naar de implementatie in Azure. Wanneer deze is voltooid, wordt met de opdracht ook een koppeling naar de implementatietoepassing weergegeven.
Deze AZD-sjabloon bevat bestanden (azure.yaml en de inframap ) die een standaardarchitectuur met de volgende Azure-resources genereren:
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
De AZD-sjabloon die u gebruikt, heeft de connectiviteitsvariabelen voor u al gegenereerd als app-instellingen en voert deze voor uw gemak uit naar de terminal. App-instellingen zijn een manier om verbindingsgeheimen uit uw codeopslagplaats te houden.
Zoek in de AZD-uitvoer de app-instelling spring.data.mongodb.uri
. Alleen de naam van de instelling wordt weergegeven. Ze zien er als volgt uit in de AZD-uitvoer:
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
bevat de verbindings-URI met de Cosmos DB-database in Azure. Het is een standaardVariabele voor Spring Data, die uw toepassing al gebruikt in het bestand src/main/resources/application.properties .
Navigeer in de verkenner naar src/main/resources/application.properties en kijk of uw Spring Boot-app al gebruikmaakt van de spring.data.mongodb.uri
variabele voor toegang tot gegevens.
Voor uw gemak ziet u in de uitvoer van de AZD-sjabloon de directe koppeling naar de pagina met app-instellingen van de app. Zoek de koppeling en open deze in een nieuw browsertabblad.
Als u de waarde van spring.data.mongodb.uri
, moet het zijn @Microsoft.KeyVault(...)
, wat betekent dat het een sleutelkluisverwijzing is omdat het geheim wordt beheerd in de sleutelkluis.
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
Zoek in de AZD-uitvoer de URL van uw app en navigeer ernaar in de browser. De URL ziet er als volgt uit in de AZD-uitvoer:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>-<hash>.azurewebsites.net/
Voeg een paar taken toe aan de lijst.
Gefeliciteerd, u voert een web-app uit in Azure-app Service, met beveiligde connectiviteit met Azure Cosmos DB.
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
Azure-app Service kan consolelogboeken vastleggen om u te helpen bij het vaststellen van problemen met uw toepassing. Voor het gemak is logboekregistratie van de AZD-sjabloon al ingeschakeld voor het lokale bestandssysteem en worden de logboeken verzonden naar een Log Analytics-werkruimte.
De voorbeeldtoepassing bevat standaard log4j-logboekregistratieinstructies om deze mogelijkheid te demonstreren, zoals wordt weergegeven in het volgende codefragment:
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();
}
Zoek in de AZD-uitvoer de koppeling om App Service-logboeken te streamen en navigeer ernaar in de browser. De koppeling ziet er als volgt uit in de AZD-uitvoer:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Meer informatie over logboekregistratie in Java-apps in de reeks over Azure Monitor OpenTelemetry inschakelen voor .NET, Node.js, Python- en Java-toepassingen.
Ondervindt u problemen? Controleer de sectie Probleemoplossing.
Als u alle Azure-resources in de huidige implementatieomgeving wilt verwijderen, voert u de aanwijzingen uit azd down
en volgt u de aanwijzingen.
azd down
Afhankelijk van uw abonnement en de regio die u selecteert, ziet u mogelijk de implementatiestatus voor Azure Cosmos DB Conflict
, met het volgende bericht in bewerkingsgegevens:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
De fout wordt waarschijnlijk veroorzaakt door een limiet voor uw abonnement voor de regio die u selecteert. Kies een andere regio voor uw implementatie.
Als u een Hey, Java developers!
pagina ziet in plaats van de takenlijst-app, wordt de bijgewerkte container waarschijnlijk nog steeds geladen vanuit de meest recente code-implementatie. Wacht enkele minuten en vernieuw de pagina.
De prijzen voor de gemaakte resources zijn als volgt:
De Java SE-container in App Service heeft al een netwerkverbinding met Cosmos DB, maar bevat geen migratiehulpprogramma's of andere MongoDB-hulpprogramma's. U hebt een aantal opties:
Met behulp van het automatisch gegenereerde werkstroombestand van App Service als voorbeeld wordt een git push
nieuwe build- en implementatieuitvoering gestart. Vanuit een lokale kloon van de GitHub-opslagplaats maakt u de gewenste updates en pusht u naar GitHub. Voorbeeld:
git add .
git commit -m "<some-message>"
git push origin main
Zie Implementatie van GitHub Actions instellen vanuit het Implementatiecentrum.
U ziet mogelijk dat de GitHub Copilot-chatweergave al voor u was toen u de coderuimte maakte. Voor uw gemak nemen we de GitHub Copilot-chatextensie op in de containerdefinitie (zie .devcontainer/devcontainer.json). U hebt echter een GitHub Copilot-account nodig (gratis proefversie van 30 dagen beschikbaar).
Enkele tips voor u wanneer u met GitHub Copilot praat:
@workspace
uw vraag. Zie Use the @workspace agent voor meer informatie.@workspace
) zelfs waar de wijzigingen moeten worden aangebracht, maar het is niet toegestaan om de wijzigingen voor u aan te brengen. Het is aan u om de voorgestelde wijzigingen toe te voegen en te testen.Meer informatie over het uitvoeren van Java-apps in App Service in de ontwikkelaarshandleiding.
Meer informatie over het beveiligen van uw app met een aangepast domein en certificaat.
gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenTraining
Module
Deploy a Spring Boot app to Azure Container Apps - Training
In this module, you learn how to deploy a Spring Boot app to Azure Container Apps. You deploy a Spring Boot application to Azure Container Apps and maintain it using the built-in Java stack.
Certificering
Microsoft-gecertificeerd: Azure Cosmos DB-ontwikkelaarsspecialisatie - Certifications
Schrijf efficiënte query's, maak indexeringsbeleid, beheer en inrichting van resources in de SQL-API en SDK met Microsoft Azure Cosmos DB.
Documentatie
Quickstart: Een Java-app maken in Azure-app Service - Azure App Service
Implementeer in enkele minuten uw eerste Java Hallo wereld in Azure App Service. De Maven-invoegtoepassing voor Azure Web Apps maakt het eenvoudig om Java-apps te implementeren.
Zelfstudie: Linux Java-app met Tomcat en MySQL - Azure App Service
Leer hoe u een gegevensgestuurde Linux Tomcat-app kunt laten werken in Azure-app Service, met verbinding met een MySQL die wordt uitgevoerd in Azure.
Overzicht van Azure-app Service - Azure App Service
Meer informatie over hoe Azure-app Service u helpt bij het ontwikkelen en hosten van webtoepassingen.