Megosztás a következőn keresztül:


Java-alkalmazás üzembe helyezése az Open Liberty vagy a WebSphere Liberty használatával az Azure Container Appsben

Ez a cikk bemutatja, hogyan futtathatja az Open Liberty vagy a WebSphere Liberty alkalmazást az Azure Container Appsben. Ebben a cikkben a következő tevékenységeket hajtja végre:

  • Futtassa a Java, Java EE, Jakarta EE vagy MicroProfile alkalmazást az Open Liberty vagy a WebSphere Liberty futtatókörnyezetben.
  • Az alkalmazás Docker-rendszerképének létrehozása Liberty-tárolórendszerképek használatával.
  • Helyezze üzembe a tárolóalapú alkalmazást az Azure Container Appsben.

Az Open Libertyről további információt az Open Liberty projekt oldalán talál. Az IBM WebSphere Libertyről további információt a WebSphere Liberty termékoldalán talál.

Ez a cikk segítséget nyújt az üzembe helyezés gyors elvégzéséhez. Mielőtt éles környezetben járnál, érdemes megismerkedned a Tuning Liberty-et.

Ha szeretne visszajelzést küldeni vagy szorosan együttműködni a migrálási forgatókönyvekkel a WebSphere Azure-megoldásokon fejlesztő mérnöki csapatával, töltse ki ezt a rövid felmérést a WebSphere migrálásáról , és adja meg a kapcsolattartási adatait. A programmenedzserek, építészek és mérnökök csapata azonnal kapcsolatba lép Önnel, hogy szoros együttműködést kezdeményezze.

Előfeltételek

Bejelentkezés az Azure-ba

Ha még nem tette meg, jelentkezzen be az Azure-előfizetésbe az az login paranccsal, és kövesse a képernyőn megjelenő utasításokat.

az login

Feljegyzés

A Legtöbb Azure CLI-parancsot ugyanúgy futtathatja a PowerShellben, mint a Bashben. A különbség csak változók használatakor létezik. A következő szakaszokban a különbséget szükség esetén különböző lapokban oldjuk meg.

Ha több Azure-bérlő van társítva az Azure-beli hitelesítő adataihoz, meg kell adnia, hogy melyik bérlőbe szeretne bejelentkezni. Ezt megteheti például a --tenant beállítással az login --tenant contoso.onmicrosoft.com.

Ha több előfizetéssel rendelkezik egy bérlőn belül, győződjön meg arról, hogy azzal van bejelentkezve, amelyet használni szeretne a használatával az account set --subscription <subscription-id>.

Erőforráscsoport létrehozása

Az Azure-erőforráscsoport olyan logikai csoport, amelyben az Azure-erőforrások üzembe helyezése és kezelése zajlik.

Hozzon létre egy java-liberty-project nevű erőforráscsoportot az eastus helyen található az group create paranccsal. Ezt az erőforráscsoportot később az Azure Container Registry (ACR) és az Azure Container Apps-példány létrehozásához használják.

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

ACR-példány létrehozása

Az ACR-példány létrehozásához használja az az acr create parancsot. Az alábbi példa létrehoz egy youruniqueacrname nevű ACR-példányt. Győződjön meg arról, hogy a név egyedi az Azure-ban.

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

Rövid idő elteltével megjelenik egy JSON-kimenet, amely a következő sorokat tartalmazza:

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

Csatlakozás az ACR-példányhoz

Mielőtt leküldhet egy képet, be kell jelentkeznie az ACR-példányba. Ha helyileg futtat parancsokat, győződjön meg arról, hogy a docker démon fut, és futtassa a következő parancsokat a kapcsolat ellenőrzéséhez:

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

Ha sikeresen bejelentkezett az ACR-példányba, a parancs kimenetének végén kell megjelennie Login Succeeded .

Környezet létrehozása

Az Azure Container Apps környezete biztonságos határt hoz létre a tárolóalkalmazások egy csoportja körül. Az ugyanabban a környezetben üzembe helyezett Tárolóalkalmazások ugyanabban a virtuális hálózaton vannak üzembe helyezve, és naplókat írnak ugyanarra a Log Analytics-munkaterületre. Környezet létrehozásához használja az az containerapp env create parancsot. Az alábbi példa létrehoz egy youracaenvname nevű környezetet:

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

Ha a rendszer egy bővítmény telepítésére kéri, válaszoljon az Y válaszra.

Rövid idő elteltével megjelenik egy JSON-kimenet, amely a következő sorokat tartalmazza:

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

Azure SQL Database-adatbázis létrehozása

Ebben a szakaszban egyetlen Azure SQL Database-adatbázist hoz létre az alkalmazással való használatra.

Egyetlen adatbázis létrehozása az Azure SQL Database-ben az Azure CLI rövid útmutatójának lépéseit követve: Egyetlen adatbázis létrehozása – Azure SQL Database. Hajtsa végre a lépéseket, de az adatbázis lekérdezését nem. A cikk végighaladtával kövesse az alábbi lépéseket, majd térjen vissza a dokumentumhoz az adatbázis-kiszolgáló létrehozása és konfigurálása után:

Amikor eléri a rövid útmutató Paraméterértékek beállítása szakaszát, adja ki a kimenetet, és mentse el a változók értékeit a kód példájában, amely a resourceGroupkövetkező címkével van ellátvaVariable block: ,server, database, ésloginpassword. Adja meg a következő környezeti változókat a helyőrzők <resourceGroup>,<server>, <database>, <login>és <password> ezekre az értékekre való lecserélése után.

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>

Ha később helyileg szeretné tesztelni az alkalmazást, az alábbi lépésekkel győződjön meg arról, hogy az ügyfél IPv4-címe csatlakozhat:

  1. A portálon keresse meg és válassza ki az SQL-adatbázisokat, majd válassza ki az adatbázist a listából.

  2. Válassza az Áttekintés lehetőséget.

  3. Győződjön meg arról, hogy az Első lépések lap ki van jelölve a lap közepén.

  4. A Hozzáférés konfigurálása csoportban válassza a Konfigurálás lehetőséget.

  5. Válassza az Ügyfél IPv4-címének hozzáadása lehetőséget.

  6. Válassza a Mentés lehetőséget.

  7. A tűzfalszabályokat a Hálózatkezelés panelen és a Nyilvános hozzáférés lapon találja és konfigurálhatja.

    Képernyőkép a tűzfalszabályokról – ügyfélhozzáférés engedélyezése.

Az alkalmazás lemezképének konfigurálása és létrehozása

A Liberty-alkalmazás Azure Container Appsben való üzembe helyezéséhez és futtatásához tárolóba helyezheti az alkalmazást Docker-rendszerképként Open Liberty-tárolórendszerképek vagy WebSphere Liberty-tárolórendszerképek használatával.

A mintaalkalmazás Liberty-futtatókörnyezetben való üzembe helyezéséhez kövesse az ebben a szakaszban leírt lépéseket. Ezek a lépések a Mavent használják.

Az alkalmazás kivétele

Az útmutató mintakódjának előkészítéséhez használja az alábbi parancsokat. A minta a GitHubon található.

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

Ha az állapotról szóló detached HEAD üzenetet lát, ezt az üzenetet nyugodtan figyelmen kívül hagyhatja. Ez csak azt jelenti, hogy kivett egy címkét.

Ez a cikk java-appot használ. Az alkalmazás fájlstruktúrája a következő:

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

A java, az erőforrások és a webalkalmazás könyvtárai tartalmazzák a mintaalkalmazás forráskódját. A kód deklarál és használ egy nevű jdbc/JavaEECafeDBadatforrást.

A java-app gyökérkönyvtárában két fájl található az alkalmazás lemezképének létrehozásához az Open Liberty vagy a WebSphere Liberty használatával.

A címtár liberty/config fájljában a server.xml fájl az Open Liberty és a WebSphere Liberty fürt ADATBÁZIS-kapcsolatának konfigurálására szolgál.

A projekt felépítése

Az alkalmazás létrehozásához használja a következő parancsot:

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

Ha a build sikeres, a build végén az alábbihoz hasonló kimenetnek kell megjelennie.

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

Ha nem látja ezt a kimenetet, a folytatás előtt hárítsa el és oldja meg a problémát.

(Nem kötelező) Projekt helyi tesztelése

A következő lépésekkel helyileg futtathatja és tesztelheti a projektet, mielőtt üzembe helyeznénk az Azure-ban. A kényelem érdekében használja a liberty-maven-plugin. Ha többet szeretne megtudni a webalkalmazásról, olvassa el a liberty-maven-pluginWebalkalmazás létrehozása a Mavennel című témakört. Az alkalmazáshoz bármilyen más mechanizmussal, például a helyi IDE-hez hasonlóan végezhet hasonló műveleteket.

Feljegyzés

Ha kiszolgáló nélküli adatbázis-telepítést választott, ellenőrizze, hogy az SQL-adatbázis nem lépett-e szüneteltető módba. Ennek egyik módja, ha bejelentkezik az adatbázis-lekérdezésszerkesztőbe a rövid útmutatóban leírtak szerint: Az Azure SQL Database lekérdezéséhez használja az Azure Portal lekérdezésszerkesztőt (előzetes verzió).

  1. Indítsa el az alkalmazást a következővel liberty:run: . liberty:run az előző lépésben definiált adatbázissal kapcsolatos környezeti változókat használja.

    cd <path-to-your-repo>/java-app
    mvn liberty:run
    
  2. Ellenőrizze, hogy az alkalmazás a várt módon működik-e. Ha sikeres, a parancs kimenetében hasonló [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. üzenetnek kell megjelennie. http://localhost:9080/ Lépjen a böngészőbe, és ellenőrizze, hogy az alkalmazás elérhető-e, és minden függvény működik-e.

  3. A leállításhoz nyomja le a Ctrl C billentyűkombinációt+.

Rendszerkép létrehozása

Most már futtathatja a docker buildx build parancsot a rendszerkép létrehozásához, ahogy az az alábbi példában is látható:

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 .

(Nem kötelező) A Docker-rendszerkép helyi tesztelése

Az Azure-ban való üzembe helyezés előtt az alábbi lépésekkel tesztelheti a Docker-rendszerképet helyileg:

  1. Futtassa a képet az alábbi paranccsal. Ez a parancs a korábban definiált adatbázissal kapcsolatos környezeti változókat használja.

    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. A tároló elindítása után lépjen http://localhost:9080/ a böngészőbe az alkalmazás eléréséhez.

  3. A leállításhoz nyomja le a Ctrl C billentyűkombinációt+.

A rendszerkép feltöltése az ACR-be

Ezután töltse fel az elkészített képet az előző lépésekben létrehozott ACR-be.

Ha még nem tette meg, az alábbi paranccsal jelentkezzen be az ACR-be:

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

A tárolólemezkép címkézéséhez és leküldéséhez használja az alábbi parancsokat:

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

Az alkalmazás üzembe helyezése az Azure Container Appsben

Az alábbi parancsokkal létrehozhat egy Azure Container Apps-példányt az alkalmazás futtatásához, miután lekérte a rendszerképet az ACR-ből. Ez a példa létrehoz egy Youracainstancename nevű Azure Container Apps-példányt.

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'

A sikeres kimenet egy JSON-objektum, beleértve a tulajdonságot "type": "Microsoft.App/containerApps"is.

Az alkalmazás tesztelése

Az alkalmazás eléréséhez használja a következő parancsot egy teljes url-cím lekéréséhez:

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

Nyisson meg egy webböngészőt az URL-címhez az alkalmazás eléréséhez és teszteléséhez. Az alábbi képernyőképen a futó alkalmazás látható:

Képernyőkép az Azure Container Appsben sikeresen üzembe helyezett Java liberty-alkalmazásról.

Az erőforrások eltávolítása

Az Azure-díjak elkerülése érdekében törölje a felesleges erőforrásokat. Ha a fürtre már nincs szükség, az az group delete paranccsal távolítsa el az erőforráscsoportot, a tárolóregisztrációs adatbázist, a tárolóalkalmazásokat, az adatbázis-kiszolgálót és az összes kapcsolódó erőforrást.

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

Ezután a következő paranccsal távolítsa el a tárolólemezképet a helyi Docker-kiszolgálóról:

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

Következő lépések

Az útmutatóban használt hivatkozásokból többet is megtudhat:

A WebSphere-termékek Azure-beli futtatásának lehetőségeiről további információt a WebSphere termékcsalád Azure-beli futtatására vonatkozó megoldások című témakörben talál .