Delen via


Een Java-toepassing implementeren met Open Liberty of WebSphere Liberty in Azure Container Apps

In dit artikel leest u hoe u Open Liberty of WebSphere Liberty uitvoert in Azure Container Apps. In dit artikel voert u de volgende activiteiten uit:

  • Voer uw Java-, Java EE-, Jakarta EE- of MicroProfile-toepassing uit op de Open Liberty- of WebSphere Liberty-runtime.
  • Bouw de Docker-installatiekopieën van de toepassing met behulp van Liberty-containerinstallatiekopieën.
  • Implementeer de containertoepassing in Azure Container Apps.

Zie de projectpagina Open Liberty voor meer informatie over Open Liberty. Zie de WebSphere Liberty-productpagina voor meer informatie over IBM WebSphere Liberty.

Dit artikel is bedoeld om u snel te helpen bij de implementatie. Voordat u naar productie gaat, moet u Tuning Liberty verkennen.

Als u feedback wilt geven of nauw wilt samenwerken aan uw migratiescenario's met het technische team dat WebSphere op Azure-oplossingen ontwikkelt, vult u deze korte enquête over WebSphere-migratie in en neemt u uw contactgegevens op. Het team van programmamanagers, architecten en technici neemt onmiddellijk contact met u op om nauwe samenwerking te initiëren.

Vereisten

  • Een Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
  • Bereid een lokale computer voor waarop Een Windows- of Unix-achtig besturingssysteem is geïnstalleerd, bijvoorbeeld Ubuntu, macOS of Windows-subsysteem voor Linux.
  • Installeer de Azure CLI 2.53.0 of hoger om Azure CLI-opdrachten uit te voeren.
    • Meld u aan met Azure CLI met behulp van de opdracht az login . Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Zie Aanmelden bij Azure met Azure CLI voor andere aanmeldingsopties.
    • Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Zie Extensies gebruiken en beheren met de Azure CLI voor meer informatie over extensies.
    • Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
  • Installeer een Java SE-implementatieversie 17 of hoger, bijvoorbeeld Microsoft-build van OpenJDK.
  • Installeer Maven 3.5.0 of hoger.
  • Installeer Docker voor uw besturingssysteem.
  • Zorg ervoor dat Git is geïnstalleerd.

Aanmelden bij Azure

Als u dit nog niet hebt gedaan, meldt u zich aan bij uw Azure-abonnement met behulp van de opdracht az login en volgt u de aanwijzingen op het scherm.

az login

Notitie

U kunt de meeste Azure CLI-opdrachten in PowerShell op dezelfde wijze uitvoeren als in Bash. Het verschil bestaat alleen wanneer u variabelen gebruikt. In de volgende secties wordt het verschil in verschillende tabbladen behandeld wanneer dat nodig is.

Als er meerdere Azure-tenants zijn gekoppeld aan uw Azure-referenties, moet u opgeven bij welke tenant u zich wilt aanmelden. U kunt dit doen met de --tenant optie, az login --tenant contoso.onmicrosoft.combijvoorbeeld.

Als u meerdere abonnementen binnen één tenant hebt, moet u ervoor zorgen dat u bent aangemeld met degene die u wilt gebruiken met behulp van az account set --subscription <subscription-id>.

Een brongroep maken

Een Azure-resourcegroep is een logische groep waarin Azure-resources worden geïmplementeerd en beheerd.

Maak een resourcegroep met de naam java-liberty-project met behulp van de opdracht az group create in de locatie eastus. Deze resourcegroep wordt later gebruikt voor het maken van het ACR-exemplaar (Azure Container Registry) en het Azure Container Apps-exemplaar.

export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus

Een ACR-exemplaar maken

Gebruik de opdracht az acr create om het ACR-exemplaar te maken. In het volgende voorbeeld wordt een ACR-exemplaar gemaakt met de naam youruniqueacrname. Zorg ervoor dat uwuniqueacrname uniek is binnen Azure.

export REGISTRY_NAME=youruniqueacrname
az acr create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $REGISTRY_NAME \
    --sku Basic \
    --admin-enabled

Na korte tijd ziet u een JSON-uitvoer die de volgende regels bevat:

  "provisioningState": "Succeeded",
  "publicNetworkAccess": "Enabled",
  "resourceGroup": "java-liberty-project",

Verbinding maken met het ACR-exemplaar

U moet zich aanmelden bij het ACR-exemplaar voordat u een installatiekopieën naar het exemplaar kunt pushen. Als u ervoor kiest om opdrachten lokaal uit te voeren, controleert u of de docker-daemon wordt uitgevoerd en voert u de volgende opdrachten uit om de verbinding te controleren:

export ACR_LOGIN_SERVER=$(az acr show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $REGISTRY_NAME \
    --query 'loginServer' \
    --output tsv)
export ACR_USER_NAME=$(az acr credential show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $REGISTRY_NAME \
    --query 'username' \
    --output tsv)
export ACR_PASSWORD=$(az acr credential show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $REGISTRY_NAME \
    --query 'passwords[0].value' \
    --output tsv)

docker login $ACR_LOGIN_SERVER -u $ACR_USER_NAME -p $ACR_PASSWORD

U ziet Login Succeeded aan het einde van de opdrachtuitvoer als u bent aangemeld bij het ACR-exemplaar.

Een omgeving maken

Een omgeving in Azure Container Apps maakt een veilige grens rond een groep container-apps. Container Apps die in dezelfde omgeving zijn geïmplementeerd, worden geïmplementeerd in hetzelfde virtuele netwerk en schrijven logboeken naar dezelfde Log Analytics-werkruimte. Gebruik de opdracht az containerapp env create om een omgeving te maken. In het volgende voorbeeld wordt een omgeving met de naam youracaenvname gemaakt:

export ACA_ENV=youracaenvname
az containerapp env create \
    --resource-group $RESOURCE_GROUP_NAME \
    --location eastus \
    --name $ACA_ENV

Als u wordt gevraagd om een extensie te installeren, beantwoordt u Y.

Na korte tijd ziet u een JSON-uitvoer die de volgende regels bevat:

  "provisioningState": "Succeeded",
  "type": "Microsoft.App/managedEnvironments"
  "resourceGroup": "java-liberty-project",

Een Azure SQL-database maken

In deze sectie maakt u een individuele Azure SQL Database-database voor gebruik met uw app.

Maak één database in Azure SQL Database door de Azure CLI-stappen in quickstart te volgen: Een individuele database maken - Azure SQL Database. Voer de stappen uit tot, maar niet inclusief Query's op de database. Gebruik de volgende stappen tijdens het doorlopen van het artikel en ga vervolgens terug naar dit document nadat u de databaseserver hebt gemaakt en geconfigureerd:

Wanneer u de sectie Parameterwaarden instellen van de quickstart bereikt, voert u de uitvoer uit en slaat u de waarden van variabelen op in het codevoorbeeld met Variable blockhet label , inclusief resourceGroup,serverdatabase , en .passwordlogin Definieer de volgende omgevingsvariabelen nadat u tijdelijke aanduidingen <resourceGroup>hebt vervangen, <login><server><database>en <password> door deze waarden.

export DB_RESOURCE_GROUP=<resourceGroup>
export DB_SERVER_NAME=<server>.database.windows.net
export DB_NAME=<database>
export DB_USER=<login>
export DB_PASSWORD=<password>

Als u de toepassing later lokaal wilt testen, gebruikt u de volgende stappen om ervoor te zorgen dat uw IPv4-clientadres verbinding mag maken:

  1. In de portal zoekt en selecteert u SQL-databases en selecteert u vervolgens uw database in de lijst.

  2. Selecteer Overzicht.

  3. Zorg ervoor dat het tabblad Aan de slag is geselecteerd in het midden van de pagina.

  4. Selecteer Configureren onder Toegang configureren.

  5. Selecteer Het IPv4-adres van de client toevoegen.

  6. Selecteer Opslaan.

  7. U kunt firewallregels vinden en configureren in het deelvenster Netwerken en het tabblad Openbare toegang.

    Schermopname van firewallregels: clienttoegang toestaan.

De installatiekopieën van de toepassing configureren en bouwen

Als u uw Liberty-toepassing wilt implementeren en uitvoeren in Azure Container Apps, containeriseert u uw toepassing als docker-installatiekopieën met behulp van Open Liberty-containerinstallatiekopieën of WebSphere Liberty-containerinstallatiekopieën.

Volg de stappen in deze sectie om de voorbeeldtoepassing te implementeren in de Liberty Runtime. In deze stappen wordt Maven gebruikt.

De toepassing uitchecken

Gebruik de volgende opdrachten om de voorbeeldcode voor te bereiden voor deze handleiding. Het voorbeeld bevindt zich op GitHub.

git clone https://github.com/Azure-Samples/open-liberty-on-aca.git
cd open-liberty-on-aca
git checkout 20231026

Als u een bericht ziet over een status detached HEAD , is dit bericht veilig te negeren. Het betekent alleen dat je een tag hebt uitgecheckt.

In dit artikel wordt java-app gebruikt. Dit is de bestandsstructuur van de toepassing:

java-app
├─ src/main/
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml

De directory's java, resources en web-app bevatten de broncode van de voorbeeldtoepassing. De code declareert en gebruikt een gegevensbron met de naam jdbc/JavaEECafeDB.

In de hoofdmap van de Java-app zijn er twee bestanden om de toepassingsinstallatiekopieën te maken met Open Liberty of WebSphere Liberty.

In map liberty/config wordt het server.xml-bestand gebruikt voor het configureren van de DB-verbinding voor het Open Liberty- en WebSphere Liberty-cluster.

Het project bouwen

Gebruik de volgende opdracht om de toepassing te maken:

cd <path-to-your-repo>/java-app
mvn clean install

Als de build is geslaagd, ziet u uitvoer die lijkt op het volgende aan het einde van uw build.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------

Als u deze uitvoer niet ziet, kunt u het probleem oplossen voordat u doorgaat.

(Optioneel) Uw project lokaal testen

U kunt nu de volgende stappen gebruiken om het project lokaal uit te voeren en te testen voordat u implementeert in Azure. Gebruik voor het gemak de liberty-maven-plugin. Zie Een webtoepassing bouwen met Maven voor meer informatie over de liberty-maven-pluginwebtoepassing. Voor uw toepassing kunt u iets soortgelijks doen met behulp van een ander mechanisme, zoals uw lokale IDE.

Notitie

Als u een serverloze database-implementatie hebt geselecteerd, controleert u of uw SQL-database niet in de onderbrekingsmodus is gegaan. Een manier om dit te doen, is om u aan te melden bij de databasequery-editor, zoals beschreven in quickstart: De Azure Portal-queryeditor (preview) gebruiken om een query uit te voeren op Azure SQL Database.

  1. Start de toepassing met behulp van liberty:run. liberty:run maakt gebruik van de omgevingsvariabelen die zijn gedefinieerd in de vorige stap.

    cd <path-to-your-repo>/java-app
    mvn liberty:run
    
  2. Controleer of de toepassing werkt zoals verwacht. Als dit lukt, ziet u een bericht dat lijkt op [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. in de uitvoer van de opdracht. Ga in uw browser om http://localhost:9080/ te controleren of de toepassing toegankelijk is en alle functies werken.

  3. Druk op Ctrl+C om te stoppen.

De installatiekopie bouwen

U kunt nu de docker buildx build opdracht uitvoeren om de installatiekopieën te bouwen, zoals wordt weergegeven in het volgende voorbeeld:

cd <path-to-your-repo>/java-app

# If you are running with Open Liberty
docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .

# If you are running with WebSphere Liberty
docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile-wlp .

(Optioneel) De Docker-installatiekopieën lokaal testen

U kunt nu de volgende stappen gebruiken om de Docker-installatiekopieën lokaal te testen voordat u implementeert in Azure:

  1. Voer de installatiekopieën uit met behulp van de volgende opdracht. Deze opdracht maakt gebruik van de omgevingsvariabelen die eerder zijn gedefinieerd in de database.

    docker run -it --rm -p 9080:9080 \
        -e DB_SERVER_NAME=${DB_SERVER_NAME} \
        -e DB_NAME=${DB_NAME} \
        -e DB_USER=${DB_USER} \
        -e DB_PASSWORD=${DB_PASSWORD} \
        javaee-cafe:v1
    
  2. Nadat de container is gestart, gaat u naar http://localhost:9080/ uw browser om toegang te krijgen tot de toepassing.

  3. Druk op Ctrl+C om te stoppen.

Installatiekopie naar ACR uploaden

Upload vervolgens de ingebouwde installatiekopie naar de ACR die u in de vorige stappen hebt gemaakt.

Als u dit nog niet hebt gedaan, gebruikt u de volgende opdracht om u aan te melden bij de ACR:

docker login -u ${ACR_USER_NAME} -p ${ACR_PASSWORD} ${ACR_LOGIN_SERVER}

Gebruik de volgende opdrachten om de containerinstallatiekopieën te taggen en te pushen:

docker tag javaee-cafe:v1 ${ACR_LOGIN_SERVER}/javaee-cafe:v1
docker push ${ACR_LOGIN_SERVER}/javaee-cafe:v1

De toepassing implementeren in Azure Container Apps

Gebruik de volgende opdrachten om een Azure Container Apps-exemplaar te maken om de app uit te voeren nadat u de installatiekopie uit de ACR hebt opgehaald. In dit voorbeeld wordt een Exemplaar van Azure Container Apps gemaakt met de naam youracainstancename.

export ACA_NAME=youracainstancename
az containerapp create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --image ${ACR_LOGIN_SERVER}/javaee-cafe:v1 \
    --environment $ACA_ENV \
    --registry-server $ACR_LOGIN_SERVER \
    --registry-username $ACR_USER_NAME \
    --registry-password $ACR_PASSWORD \
    --target-port 9080 \
    --env-vars \
        DB_SERVER_NAME=${DB_SERVER_NAME} \
        DB_NAME=${DB_NAME} \
        DB_USER=${DB_USER} \
        DB_PASSWORD=${DB_PASSWORD} \
    --ingress 'external'

Geslaagde uitvoer is een JSON-object met inbegrip van de eigenschap "type": "Microsoft.App/containerApps".

De toepassing testen

Gebruik de volgende opdracht om een volledig gekwalificeerde URL op te halen voor toegang tot de toepassing:

echo https://$(az containerapp show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --query properties.configuration.ingress.fqdn \
    --output tsv)

Open een webbrowser naar de URL om de toepassing te openen en te testen. In de volgende schermopname ziet u de actieve toepassing:

Schermopname van de Java liberty-toepassing die is geïmplementeerd in Azure Container Apps.

Resources opschonen

Om Azure-kosten te voorkomen, moet u overbodige resources opschonen. Wanneer het cluster niet meer nodig is, gebruikt u de opdracht az group delete om de resourcegroep, het containerregister, de container-apps, de databaseserver en alle gerelateerde resources te verwijderen.

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
az group delete --name $DB_RESOURCE_GROUP --yes --no-wait

Gebruik vervolgens de volgende opdracht om de containerinstallatiekopieën van uw lokale Docker-server te verwijderen:

docker rmi -f ${ACR_LOGIN_SERVER}/javaee-cafe:v1

Volgende stappen

Meer informatie vindt u in de verwijzingen die in deze handleiding worden gebruikt:

Als u opties wilt verkennen om WebSphere-producten uit te voeren in Azure, raadpleegt u Wat zijn oplossingen voor het uitvoeren van de WebSphere-producten in Azure?