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
- Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
- Helyi gép előkészítése windowsos vagy Unix-szerű operációs rendszerrel – például Ubuntu, macOS vagy Linuxos Windows-alrendszer.
- Az Azure CLI-parancsok futtatásához telepítse az Azure CLI 2.53.0-s vagy újabb verzióját.
- Jelentkezzen be az Azure CLI-vel az az login paranccsal. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért tekintse meg a Bejelentkezés az Azure-ba az Azure CLI-vel című témakört.
- Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
- Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Telepítse a Java SE 17-es vagy újabb verzióját – például az OpenJDK Microsoft-buildet.
- Telepítse a Maven 3.5.0-s vagy újabb verzióját.
- Telepítse a Dockert az operációs rendszerhez.
- Győződjön meg arról, hogy a Git telepítve van.
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 resourceGroup
következő címkével van ellátvaVariable block
: ,server
, database
, éslogin
password
. 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:
A portálon keresse meg és válassza ki az SQL-adatbázisokat, majd válassza ki az adatbázist a listából.
Válassza az Áttekintés lehetőséget.
Győződjön meg arról, hogy az Első lépések lap ki van jelölve a lap közepén.
A Hozzáférés konfigurálása csoportban válassza a Konfigurálás lehetőséget.
Válassza az Ügyfél IPv4-címének hozzáadása lehetőséget.
Válassza a Mentés lehetőséget.
A tűzfalszabályokat a Hálózatkezelés panelen és a Nyilvános hozzáférés lapon találja és konfigurálhatja.
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/JavaEECafeDB
adatforrá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-plugin
Webalkalmazá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ó).
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
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.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:
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
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.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ó:
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:
- Azure Container Apps
- Open Liberty
- A Liberty Server konfigurációjának megnyitása
- Liberty Maven beépülő modul
- Open Liberty Container Images
- WebSphere Liberty-tárolórendszerképek
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 .