Nasazení aplikace v Javě pomocí Open Liberty nebo WebSphere Liberty v Azure Container Apps
V tomto článku se dozvíte, jak spustit Open Liberty nebo WebSphere Liberty ve službě Azure Container Apps. V tomto článku provedete následující aktivity:
- Spusťte svoji aplikaci Java, Java EE, Jakarta EE nebo MicroProfile v modulu runtime Open Liberty nebo WebSphere Liberty.
- Sestavte image Dockeru aplikace pomocí imagí kontejneru Liberty.
- Nasaďte kontejnerizovanou aplikaci do Azure Container Apps.
Další informace o open liberty naleznete na stránce projektu Open Liberty. Další informace o IBM WebSphere Liberty naleznete na stránce produktu WebSphere Liberty.
Tento článek vám pomůže rychle se dostat k nasazení. Než půjdete do produkce, měli byste prozkoumat Tuning Liberty.
Pokud chcete poskytnout zpětnou vazbu nebo úzce spolupracovat na scénářích migrace s technickým týmem, který vyvíjí webSphere v řešeních Azure, vyplňte tento krátký průzkum o migraci WebSphere a uveďte své kontaktní informace. Tým programových manažerů, architektů a inženýrů se s vámi okamžitě spojí a zahájí úzkou spolupráci.
Požadavky
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Připravte místní počítač s nainstalovaným operačním systémem Windows nebo Unix – například Ubuntu, macOS nebo Subsystém Windows pro Linux.
- Nainstalujte Azure CLI 2.53.0 nebo novější a spusťte příkazy Azure CLI.
- Přihlaste se pomocí Azure CLI pomocí příkazu az login . Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení k Azure pomocí Azure CLI .
- Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
- Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Nainstalujte implementaci Java SE verze 17 nebo novější – například sestavení OpenJDK od Microsoftu.
- Nainstalujte Maven 3.5.0 nebo novější.
- Nainstalujte Docker pro váš operační systém.
- Ujistěte se, že je nainstalovaný Git .
Přihlášení k Azure
Pokud jste to ještě neudělali, přihlaste se ke svému předplatnému Azure pomocí příkazu az login a postupujte podle pokynů na obrazovce.
az login
Poznámka:
Většinu příkazů Azure CLI můžete spustit v PowerShellu stejně jako v Bash. Rozdíl existuje pouze při použití proměnných. V následujících částech je rozdíl v případě potřeby vyřešený na různých kartách.
Pokud máte k přihlašovacím údajům Azure přidružených více tenantů Azure, musíte určit, ke kterému tenantovi se chcete přihlásit. Můžete to udělat pomocí --tenant
možnosti , az login --tenant contoso.onmicrosoft.com
například .
Pokud máte v rámci jednoho tenanta více předplatných, ujistěte se, že jste přihlášení pomocí předplatného, které chcete použít .az account set --subscription <subscription-id>
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure.
Vytvořte skupinu prostředků s názvem java-liberty-project pomocí příkazu az group create v umístění eastus . Tato skupina prostředků se použije později k vytvoření instance služby Azure Container Registry (ACR) a instance Azure Container Apps.
export RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus
Vytvoření instance ACR
K vytvoření instance ACR použijte příkaz az acr create. Následující příklad vytvoří instanci ACR s názvem youruniqueacrname. Ujistěte se, že je vašeuniqueacrname v rámci Azure jedinečný.
export REGISTRY_NAME=youruniqueacrname
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--name $REGISTRY_NAME \
--sku Basic \
--admin-enabled
Po krátké době by se měl zobrazit výstup JSON, který obsahuje následující řádky:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "java-liberty-project",
Připojení k instanci ACR
Před nasdílení image do instance služby ACR se musíte přihlásit k instanci služby ACR. Pokud se rozhodnete spouštět příkazy místně, ujistěte se, že je proces démon Dockeru spuštěný, a spuštěním následujících příkazů ověřte připojení:
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
Pokud jste se úspěšně přihlásili k instanci ACR, měli byste vidět Login Succeeded
na konci výstupu příkazu.
Vytvořit prostředí
Prostředí v Azure Container Apps vytvoří zabezpečenou hranici kolem skupiny kontejnerových aplikací. KontejnerOvé aplikace nasazené do stejného prostředí se nasazují ve stejné virtuální síti a zapisují protokoly do stejného pracovního prostoru služby Log Analytics. K vytvoření prostředí použijte příkaz az containerapp env create. Následující příklad vytvoří prostředí s názvem youracaenvname:
export ACA_ENV=youracaenvname
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location eastus \
--name $ACA_ENV
Pokud se zobrazí výzva k instalaci rozšíření, odpovězte na Y.
Po krátké době by se měl zobrazit výstup JSON, který obsahuje následující řádky:
"provisioningState": "Succeeded",
"type": "Microsoft.App/managedEnvironments"
"resourceGroup": "java-liberty-project",
Vytvoření databáze Azure SQL Database
V této části vytvoříte jednoúčelovou databázi Azure SQL Database pro použití s vaší aplikací.
V Azure SQL Database vytvořte jednoúčelovou databázi pomocí kroků Azure CLI v rychlém startu: Vytvoření izolované databáze – Azure SQL Database. Proveďte kroky až do databáze, ale nezahrnuje dotaz na databázi. Při procházení článku použijte následující kroky a po vytvoření a konfiguraci databázového serveru se vraťte k tomuto dokumentu:
Když se v rychlém startu dostanete do části Nastavit hodnoty parametrů, výstup a uložte si hodnoty proměnných v příkladu kódu označeném Variable block
jako ,server
resourceGroup
, database
, login
a password
. Po nahrazení zástupných symbolů <resourceGroup>
,<server>
, <database>
, <login>
a <password>
těmito hodnotami definujte následující proměnné prostředí.
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>
Pokud chcete aplikaci otestovat místně později, pomocí následujícího postupu se ujistěte, že se vaše adresa IPv4 klienta může připojit:
Na portálu vyhledejte a vyberte databáze SQL a pak ze seznamu vyberte svou databázi.
Vyberte Přehled.
Ujistěte se, že je uprostřed stránky vybraná karta Začínáme .
V části Konfigurovat přístup vyberte Konfigurovat.
Vyberte Přidat adresu IPv4 klienta.
Zvolte Uložit.
Pravidla brány firewall najdete a nakonfigurujete v podokně Sítě a na kartě Veřejný přístup.
Konfigurace a sestavení image aplikace
Pokud chcete nasadit a spustit aplikaci Liberty ve službě Azure Container Apps, kontejnerizujte aplikaci jako image Dockeru pomocí imagí kontejnerů Open Liberty nebo imagí kontejnerů WebSphere Liberty.
Podle kroků v této části nasaďte ukázkovou aplikaci do modulu runtime Liberty. Tyto kroky používají Maven.
Podívejte se na aplikaci
Pomocí následujících příkazů připravte vzorový kód pro tuto příručku. Ukázka je na GitHubu.
git clone https://github.com/Azure-Samples/open-liberty-on-aca.git
cd open-liberty-on-aca
git checkout 20231026
Pokud se zobrazí zpráva o stavu detached HEAD
, je tato zpráva bezpečná pro ignorování. Znamená to, že jste si rezervovali značku.
Tento článek používá java-app. Tady je struktura souborů aplikace:
java-app
├─ src/main/
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml
Adresáře java, resources a webová aplikace obsahují zdrojový kód ukázkové aplikace. Kód deklaruje a používá zdroj dat s názvem jdbc/JavaEECafeDB
.
V kořenovém adresáři aplikace v javě existují dva soubory pro vytvoření image aplikace s open Liberty nebo WebSphere Liberty.
V adresáři liberty/config se soubor server.xml používá ke konfiguraci připojení k databázi pro cluster Open Liberty a WebSphere Liberty.
Sestavení projektu
K sestavení aplikace použijte následující příkaz:
cd <path-to-your-repo>/java-app
mvn clean install
Pokud je sestavení úspěšné, měl by se na konci sestavení zobrazit výstup podobný následujícímu.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------
Pokud tento výstup nevidíte, před pokračováním problém vyřešte a vyřešte ho.
(Volitelné) Místní testování projektu
Teď můžete pomocí následujících kroků spustit a otestovat projekt místně před nasazením do Azure. Pro usnadnění použití .liberty-maven-plugin
Další informace o této liberty-maven-plugin
funkci najdete v tématu Vytvoření webové aplikace pomocí Mavenu. Pro vaši aplikaci můžete udělat něco podobného pomocí jakéhokoli jiného mechanismu, jako je místní integrované vývojové prostředí (IDE).
Poznámka:
Pokud jste vybrali nasazení bezserverové databáze, ověřte, že databáze SQL nezašla do režimu pozastavení. Jedním ze způsobů, jak to udělat, je přihlásit se k editoru databázových dotazů, jak je popsáno v rychlém startu: K dotazování služby Azure SQL Database použijte editor dotazů na webu Azure Portal (Preview).
Spusťte aplikaci pomocí
liberty:run
.liberty:run
používá proměnné prostředí související s databází definované v předchozím kroku.cd <path-to-your-repo>/java-app mvn liberty:run
Ověřte, že aplikace funguje podle očekávání. V případě úspěchu by se měla zobrazit zpráva podobná
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
výstupu příkazu.http://localhost:9080/
Přejděte v prohlížeči a ověřte, že je aplikace přístupná a všechny funkce fungují.Stisknutím kláves Ctrl+C zastavte.
Sestavení image
Teď můžete spustit docker buildx build
příkaz pro sestavení image, jak je znázorněno v následujícím příkladu:
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 .
(Volitelné) Místní testování image Dockeru
Teď můžete pomocí následujících kroků otestovat image Dockeru místně před nasazením do Azure:
Spusťte image pomocí následujícího příkazu. Tento příkaz používá dříve definované proměnné prostředí související s databází.
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
Po spuštění kontejneru přejděte v
http://localhost:9080/
prohlížeči a získejte přístup k aplikaci.Stisknutím kláves Ctrl+C zastavte.
Odeslání image do služby ACR
Potom nahrajte sestavenou image do služby ACR, kterou jste vytvořili v předchozích krocích.
Pokud jste to ještě neudělali, přihlaste se k ACR pomocí následujícího příkazu:
docker login -u ${ACR_USER_NAME} -p ${ACR_PASSWORD} ${ACR_LOGIN_SERVER}
K označení a nasdílení image kontejneru použijte následující příkazy:
docker tag javaee-cafe:v1 ${ACR_LOGIN_SERVER}/javaee-cafe:v1
docker push ${ACR_LOGIN_SERVER}/javaee-cafe:v1
Nasazení aplikace do Azure Container Apps
Pomocí následujících příkazů vytvořte instanci Azure Container Apps, která spustí aplikaci po načtení image z ACR. Tento příklad vytvoří instanci Azure Container Apps s názvem 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'
Úspěšný výstup je objekt JSON včetně vlastnosti "type": "Microsoft.App/containerApps"
.
Testování aplikace
Pomocí následujícího příkazu získejte plně kvalifikovanou adresu URL pro přístup k aplikaci:
echo https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
Otevřete webový prohlížeč s adresou URL pro přístup k aplikaci a otestování aplikace. Následující snímek obrazovky ukazuje spuštěnou aplikaci:
Vyčištění prostředků
Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už cluster nepotřebujete, pomocí příkazu az group delete odeberte skupinu prostředků, registr kontejnerů, aplikace kontejnerů, databázový server a všechny související prostředky.
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
az group delete --name $DB_RESOURCE_GROUP --yes --no-wait
Potom pomocí následujícího příkazu odeberte image kontejneru z místního serveru Dockeru:
docker rmi -f ${ACR_LOGIN_SERVER}/javaee-cafe:v1
Další kroky
Další informace najdete v referenčních informacích použitých v tomto průvodci:
- Azure Container Apps
- Otevřít Svobodu
- Otevření konfigurace serveru Liberty
- Liberty Maven Plugin
- Otevření imagí kontejneru Liberty
- Image kontejnerů WebSphere Liberty
Pokud chcete prozkoumat možnosti spouštění produktů WebSphere v Azure, přečtěte si téma Co jsou řešení pro spuštění řady produktů WebSphere v Azure?