Aracılığıyla paylaş


Azure Container Apps'te Open Liberty veya WebSphere Liberty ile java uygulaması dağıtma

Bu makalede, Azure Container Apps'te Open Liberty veya WebSphere Liberty'yi nasıl çalıştırabileceğiniz gösterilmektedir. Bu makalede aşağıdaki etkinlikleri gerçekleştirebilirsiniz:

  • Java, Java EE, Jakarta EE veya MicroProfile uygulamanızı Open Liberty veya WebSphere Liberty çalışma zamanında çalıştırın.
  • Liberty kapsayıcı görüntülerini kullanarak uygulama Docker görüntüsünü oluşturun.
  • Kapsayıcılı uygulamayı Azure Container Apps'e dağıtın.

Open Liberty hakkında daha fazla bilgi için Open Liberty proje sayfasına bakın. IBM WebSphere Liberty hakkında daha fazla bilgi için WebSphere Liberty ürün sayfasına bakın.

Bu makale, dağıtıma hızlı bir şekilde başlamanıza yardımcı olmak için tasarlanmıştır. Üretime geçmeden önce Tuning Liberty'yi keşfetmeniz gerekir.

Azure'da WebSphere çözümleri geliştiren mühendislik ekibiyle geri bildirim sağlamak veya geçiş senaryolarınız üzerinde yakından çalışmak istiyorsanız, WebSphere geçişiyle ilgili bu kısa anketi doldurun ve iletişim bilgilerinizi ekleyin. Program yöneticileri, mimarlar ve mühendislerden oluşan ekip, yakın işbirliği başlatmak için sizinle hemen iletişime geçecektir.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Ubuntu, macOS veya Linux için Windows Alt Sistemi gibi Windows veya Unix benzeri işletim sistemi yüklü yerel bir makine hazırlayın.
  • Azure CLI komutlarını çalıştırmak için Azure CLI 2.53.0 veya üzerini yükleyin.
    • az login komutunu kullanarak Azure CLI ile oturum açın . Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile Azure'da oturum açma.
    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz . Azure CLI ile uzantıları kullanma ve yönetme.
    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
  • Java SE uygulama sürümü 17 veya üzerini yükleyin; örneğin, OpenJDK'nin Microsoft derlemesi.
  • Maven 3.5.0 veya üzerini yükleyin.
  • İşletim sisteminiz için Docker'ı yükleyin.
  • Git'in yüklü olduğundan emin olun.

Azure'da oturum açma

Henüz yapmadıysanız az login komutunu kullanarak Azure aboneliğinizde oturum açın ve ekrandaki yönergeleri izleyin.

az login

Not

PowerShell'de Azure CLI komutlarının çoğunu Bash ile aynı şekilde çalıştırabilirsiniz. Fark yalnızca değişkenler kullanılırken vardır. Aşağıdaki bölümlerde, fark gerektiğinde farklı sekmelerde ele alınıyor.

Azure kimlik bilgilerinizle ilişkilendirilmiş birden çok Azure kiracınız varsa, hangi kiracıda oturum açmak istediğinizi belirtmeniz gerekir. Bunu seçeneğiyle --tenant yapabilirsiniz. Örneğin, az login --tenant contoso.onmicrosoft.com.

Tek bir kiracıda birden çok aboneliğiniz varsa, kullanarak az account set --subscription <subscription-id>kullanmayı planladığınız abonelikle oturum açtığınızdan emin olun.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir gruptur.

eastus konumundaki az group create komutunu kullanarak java-liberty-project adlı bir kaynak grubu oluşturun. Bu kaynak grubu daha sonra Azure Container Registry (ACR) örneğini ve Azure Container Apps örneğini oluşturmak için kullanılır.

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

ACR örneği oluşturma

ACR örneğini oluşturmak için az acr create komutunu kullanın. Aşağıdaki örnek youruniqueacrname adlı bir ACR örneği oluşturur. Youruniqueacrname değerinin Azure içinde benzersiz olduğundan emin olun.

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

Kısa bir süre sonra aşağıdaki satırları içeren bir JSON çıkışı görmeniz gerekir:

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

ACR örneğine bağlanma

Bir görüntüyü göndermeden önce ACR örneğinde oturum açmanız gerekir. Komutları yerel olarak çalıştırmayı seçerseniz docker daemon'un çalıştığından emin olun ve bağlantıyı doğrulamak için aşağıdaki komutları çalıştırın:

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

ACR örneğinde başarıyla oturum açtıysanız komut çıktısının sonunda görmeniz Login Succeeded gerekir.

Ortam oluşturun

Azure Container Apps'teki bir ortam, bir grup kapsayıcı uygulaması çevresinde güvenli bir sınır oluşturur. Aynı ortama dağıtılan Container Apps aynı sanal ağa dağıtılır ve günlükleri aynı Log Analytics çalışma alanına yazar. Ortam oluşturmak için az containerapp env create komutunu kullanın. Aşağıdaki örnek, youracaenvname adlı bir ortam oluşturur:

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

Uzantı yüklemeniz istenirse Y yanıtlayın.

Kısa bir süre sonra aşağıdaki satırları içeren bir JSON çıkışı görmeniz gerekir:

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

Azure SQL Veritabanı oluşturma

Bu bölümde, uygulamanızla kullanmak üzere Azure SQL Veritabanı tek bir veritabanı oluşturacaksınız.

Hızlı Başlangıç: Tek veritabanı oluşturma - Azure SQL Veritabanı'daki Azure CLI adımlarını izleyerek Azure SQL Veritabanı'da tek bir veritabanı oluşturun. Veritabanını sorgulama dahil etmek yerine en fazla adımları yürütebilirsiniz. Makalede ilerletilirken aşağıdaki adımları kullanın, ardından veritabanı sunucusunu oluşturup yapılandırdıktan sonra bu belgeye dönün:

Hızlı başlangıcın Parametre değerlerini ayarla bölümüne ulaştığınızda, çıktısını alıp etiketli Variable blockkod örneğindeki , , , , loginve passwordgibi resourceGroupserverdatabasedeğişkenlerin değerlerini bir kenara kaydedin. ,<server>, <database>, <login>ve <password> yer tutucularını <resourceGroup>bu değerlerle değiştirdikten sonra aşağıdaki ortam değişkenlerini tanımlayı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>

Uygulamayı daha sonra yerel olarak test etmek istiyorsanız, istemci IPv4 adresinizin bağlanmasına izin verildiğinden emin olmak için aşağıdaki adımları kullanın:

  1. Portalda SQL veritabanlarını arayıp seçin ve ardından listeden veritabanınızı seçin.

  2. Genel bakış'ı seçin.

  3. Sayfanın ortasında Başlarken sekmesinin seçili olduğundan emin olun.

  4. Erişimi yapılandır'ın altında Yapılandır'ı seçin.

  5. İstemci IPv4 adresinizi ekle'yi seçin.

  6. Kaydet'i seçin.

  7. Güvenlik duvarı kurallarını Ağ bölmesinde ve Genel erişim sekmesinde bulabilir ve yapılandırabilirsiniz.

    Güvenlik duvarı kurallarının ekran görüntüsü - istemci erişimine izin ver.

Uygulama görüntüsünü yapılandırma ve oluşturma

Liberty uygulamanızı Azure Container Apps'te dağıtmak ve çalıştırmak için Open Liberty kapsayıcı görüntülerini veya WebSphere Liberty kapsayıcı görüntülerini kullanarak uygulamanızı Docker görüntüsü olarak kapsayıcıya alın.

Liberty çalışma zamanında örnek uygulamayı dağıtmak için bu bölümdeki adımları izleyin. Bu adımlarda Maven kullanılır.

Uygulamayı gözden geçirin

Bu kılavuz için örnek kodu hazırlamak için aşağıdaki komutları kullanın. Örnek GitHub'dadır.

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

Durum bilgisi olan detached HEAD bir ileti görürseniz, bu iletiyi yoksayabilirsiniz. Bu yalnızca bir etiketi kullanıma almış olduğunuz anlamına gelir.

Bu makalede java-app kullanılır. Uygulamanın dosya yapısı aşağıdadır:

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

Java, resources ve webapp dizinleri örnek uygulamanın kaynak kodunu içerir. Kod adlı jdbc/JavaEECafeDBbir veri kaynağı bildirir ve kullanır.

java-app kök dizininde, Open Liberty veya WebSphere Liberty ile uygulama görüntüsünü oluşturmak için iki dosya vardır.

Liberty/config dizininde, server.xml dosyası Open Liberty ve WebSphere Liberty kümesi için VERITABANı bağlantısını yapılandırmak için kullanılır.

Projeyi derleme

Uygulamayı derlemek için aşağıdaki komutu kullanın:

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

Derleme başarılı olursa, derlemenizin sonunda aşağıdakine benzer bir çıktı görmeniz gerekir.

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

Bu çıkışı görmüyorsanız devam etmeden önce sorunu giderin ve çözün.

(İsteğe bağlı) Projenizi yerel olarak test etme

Artık Azure'a dağıtmadan önce projeyi yerel olarak çalıştırmak ve test etmek için aşağıdaki adımları kullanabilirsiniz. Kolaylık sağlamak için kullanın liberty-maven-plugin. hakkında liberty-maven-plugindaha fazla bilgi edinmek için bkz . Maven ile web uygulaması oluşturma. Uygulamanız için, yerel IDE'niz gibi başka bir mekanizma kullanarak benzer bir şey yapabilirsiniz.

Not

"Sunucusuz" bir veritabanı dağıtımı seçtiyseniz, SQL veritabanınızın duraklatma moduna girmediğini doğrulayın. Bunun bir yolu, Hızlı Başlangıç: Azure portal sorgu düzenleyicisini (önizleme) kullanarak Azure SQL Veritabanı sorgulamada açıklandığı gibi veritabanı sorgu düzenleyicisinde oturum açmaktır.

  1. uygulamasını kullanarak liberty:runbaşlatın. liberty:run önceki adımda tanımlanan veritabanıyla ilgili ortam değişkenlerini kullanır.

    cd <path-to-your-repo>/java-app
    mvn liberty:run
    
  2. Uygulamanın beklendiği gibi çalıştığını doğrulayın. Başarılı olursa komut çıkışında şuna benzer [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. bir ileti görmeniz gerekir. http://localhost:9080/ Uygulamanın erişilebilir olduğunu ve tüm işlevlerin çalıştığını doğrulamak için tarayıcınızda adresine gidin.

  3. Durdurmak için Ctrl C tuşlarına+basın.

Görüntü oluşturma

Şimdi aşağıdaki örnekte gösterildiği gibi görüntüyü oluşturmak için komutunu çalıştırabilirsiniz docker buildx build :

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 .

(İsteğe bağlı) Docker görüntüsünü yerel olarak test edin

Artık Azure'a dağıtmadan önce Docker görüntüsünü yerel olarak test etmek için aşağıdaki adımları kullanabilirsiniz:

  1. Aşağıdaki komutu kullanarak görüntüyü çalıştırın. Bu komut, daha önce tanımlanan veritabanıyla ilgili ortam değişkenlerini kullanır.

    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. Kapsayıcı başlatıldıktan sonra, uygulamaya erişmek için tarayıcınızda adresine gidin http://localhost:9080/ .

  3. Durdurmak için Ctrl C tuşlarına+basın.

Görüntüyü ACR’ye yükleme

Ardından, önceki adımlarda oluşturduğunuz ACR'ye yerleşik görüntüyü yükleyin.

Henüz yapmadıysanız, ACR'de oturum açmak için aşağıdaki komutu kullanın:

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

Kapsayıcı görüntüsünü etiketlemek ve göndermek için aşağıdaki komutları kullanın:

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

Uygulamayı Azure Container Apps'e dağıtma

Görüntüyü ACR'den çektikten sonra uygulamayı çalıştırmak üzere bir Azure Container Apps örneği oluşturmak için aşağıdaki komutları kullanın. Bu örnek, youracainstancename adlı bir Azure Container Apps örneği oluşturur.

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'

Başarılı çıkış, özelliğini "type": "Microsoft.App/containerApps"içeren bir JSON nesnesidir.

Uygulamayı test etme

Uygulamaya erişmek üzere tam url almak için aşağıdaki komutu kullanın:

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

Uygulamaya erişmek ve uygulamayı test etmek için URL'ye bir web tarayıcısı açın. Aşağıdaki ekran görüntüsünde çalışan uygulama gösterilmektedir:

Azure Container Apps'te başarıyla dağıtılan Java liberty uygulamasını gösteren ekran görüntüsü.

Kaynakları temizleme

Azure ücretlerinden kaçınmak için gereksiz kaynakları temizlemeniz gerekir. Küme artık gerekli olmadığında az group delete komutunu kullanarak kaynak grubunu, kapsayıcı kayıt defterini, kapsayıcı uygulamalarını, veritabanı sunucusunu ve tüm ilgili kaynakları kaldırın.

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

Ardından, kapsayıcı görüntüsünü yerel Docker sunucunuzdan kaldırmak için aşağıdaki komutu kullanın:

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

Sonraki adımlar

Bu kılavuzda kullanılan başvurulardan daha fazla bilgi edinebilirsiniz:

WebSphere ürünlerini Azure'da çalıştırma seçeneklerini keşfetmek için bkz . Azure'da WebSphere ürün ailesini çalıştırmaya yönelik çözümler nelerdir?