Hızlı Başlangıç: Azure Spring Apps'te uygulama derleme ve dağıtma

Not

Temel, Standart ve Kurumsal planları, 3 yıllık kullanımdan kaldırma süresiyle Mart 2025 ortasından itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Standart tüketim ve ayrılmış plan, altı ay sonra tamamen kapatılarak 30 Eylül 2024'den itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps Standart tüketimini ve ayrılmış planı Azure Container Apps'e geçirme.

Bu makale şunlar için geçerlidir: ✔️ Temel/Standart ❌ Kurumsal

Bu hızlı başlangıçta, Azure CLI kullanarak Spring uygulamalarının nasıl derlenip Azure Spring Apps'e dağıtılacağı açıklanmaktadır.

Önkoşullar

Örnek uygulamayı indirme

Örnek uygulamayı indirmek için aşağıdaki adımları kullanın. Azure Cloud Shell kullanıyorsanız yerel komut istemine geçin.

  1. Yeni bir klasör oluşturun ve örnek uygulama deposunu kopyalayın.

    mkdir source-code
    
    cd source-code
    
    git clone https://github.com/Azure-Samples/azure-spring-apps-samples
    
  2. Depo dizinine gidin.

    cd azure-spring-apps-samples
    

PlanetWeatherProvider'ı dağıtma

PlanetWeatherProvider projesini dağıtmak için aşağıdaki adımları kullanın.

  1. Azure Spring Apps örneğinizde proje için PlanetWeatherProvider bir uygulama oluşturun.

    az spring app create --name planet-weather-provider --runtime-version NetCore_31
    

    Otomatik hizmet kaydını etkinleştirmek için uygulamaya projenin appsettings.json dosyasındaki değeriyle spring.application.name aynı adı verdiniz:

    "spring": {
      "application": {
        "name": "planet-weather-provider"
      }
    }
    

    Bu komutun çalıştırılması birkaç dakika sürebilir.

  2. Dizini proje klasörüne PlanetWeatherProvider değiştirin.

    cd steeltoe-sample/src/planet-weather-provider
    
  3. Dağıtılacak ikili dosyaları ve .zip dosyasını oluşturun.

    dotnet publish -c release -o ./publish
    

    İpucu

    Proje dosyası, ikili dosyaları ./publish klasörüne yazdıktan sonra bir .zip dosyasında paketlemek için aşağıdaki XML'yi içerir:

    <Target Name="Publish-Zip" AfterTargets="Publish">
      <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/publish-deploy-planet.zip" Overwrite="true" />
    </Target>
    
  4. Projeyi Azure'a dağıtma.

    Aşağıdaki komutu çalıştırmadan önce komut isteminin proje klasöründe olduğundan emin olun.

    az spring app deploy \
        --name planet-weather-provider \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll \
        --artifact-path ./publish-deploy-planet.zip
    

    seçeneği, --main-entry .zip dosyasının kök klasöründen uygulamanın giriş noktasını içeren .dll dosyasına göreli yolu belirtir. Hizmet .zip dosyasını karşıya yükledikten sonra tüm dosya ve klasörleri ayıklar ve belirtilen .dll dosyasındaki giriş noktasını yürütmeyi dener.

    Bu komutun çalıştırılması birkaç dakika sürebilir.

SolarSystemWeather'ı dağıtma

SolarSystemWeather projesini dağıtmak için aşağıdaki adımları kullanın.

  1. Proje için Azure Spring Apps örneğinizde başka bir uygulama oluşturun.

    az spring app create --name solar-system-weather --runtime-version NetCore_31
    

    solar-system-weather, projenin appsettings.json dosyasında belirtilen SolarSystemWeather addır.

    Bu komutun çalıştırılması birkaç dakika sürebilir.

  2. Dizini projeye değiştirin SolarSystemWeather .

    cd ../solar-system-weather
    
  3. Dağıtılacak ikili dosyaları ve .zip dosyasını oluşturun.

    dotnet publish -c release -o ./publish
    
  4. Projeyi Azure'a dağıtma.

    az spring app deploy \
        --name solar-system-weather \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll \
        --artifact-path ./publish-deploy-solar.zip
    

    Bu komutun çalıştırılması birkaç dakika sürebilir.

Genel uç nokta atama

Uygulamayı test etmeden önce, uygulamaya http GET isteği solar-system-weather için genel uç nokta alın.

  1. Uç noktayı atamak için aşağıdaki komutu çalıştırın.

    az spring app update --name solar-system-weather --assign-endpoint true
    
  2. Uç noktanın URL'sini almak için aşağıdaki komutu çalıştırın.

    Windows:

    az spring app show --name solar-system-weather --output table
    

    Linux:

    az spring app show --name solar-system-weather | grep url
    

Uygulamayı test etme

Uygulamayı test etmek için uygulamaya bir GET isteği solar-system-weather gönderin. Tarayıcıda, sonuna eklenmiş genel URL'ye /weatherforecast gidin. Örneğin: https://servicename-solar-system-weather.azuremicroservices.io/weatherforecast

Çıkış JSON'dir:

[{"Key":"Mercury","Value":"very warm"},{"Key":"Venus","Value":"quite unpleasant"},{"Key":"Mars","Value":"very cool"},{"Key":"Saturn","Value":"a little bit sandy"}]

Bu yanıt, her iki Spring uygulaması da çalıştığını gösterir. Uygulama, SolarSystemWeather uygulamadan PlanetWeatherProvider alınan verileri döndürür.

Bu makalede Spring uygulamalarının nasıl derlenip Azure Spring Apps'e dağıtılacağı açıklanmaktadır. Azure CLI, Maven eklentisi veya Intellij kullanabilirsiniz. Bu makalede her alternatif açıklanmaktadır.

Önkoşullar

Spring uygulamalarını yerel olarak derleme

Örnek depoyu kopyalamak, örnek klasöre gitmek ve projeyi oluşturmak için aşağıdaki komutları kullanın.

git clone https://github.com/azure-samples/spring-petclinic-microservices
cd spring-petclinic-microservices
mvn clean package -DskipTests -Denv=cloud

Projenin derlenmesi 5-10 dakika sürer. Proje derlendiğinde, ilgili klasörlerinde her hizmet için ayrı JAR dosyalarına sahip olmanız gerekir.

Azure Spring Apps'te uygulama oluşturma ve dağıtma

CLI kullanarak Azure Spring Apps'te uygulama oluşturmak ve dağıtmak için aşağıdaki adımları kullanın.

  1. Önceki hızlı başlangıçlarda aşağıdaki komutları çalıştırmadıysanız, CLI varsayılanlarını ayarlamak için şimdi çalıştırın.

    az configure --defaults group=<resource-group-name> spring=<service-name>
    
  2. PetClinic için iki temel Spring uygulaması oluşturun: api-gateway ve customers-service.

    az spring app create \
        --name api-gateway \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi \
        --assign-endpoint
    az spring app create \
        --name customers-service \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi
    
  3. Önceki adımda oluşturulan JAR dosyalarını dağıtın.

    az spring app deploy \
        --name api-gateway \
        --artifact-path spring-petclinic-api-gateway/target/api-gateway-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    az spring app deploy \
        --name customers-service \
        --artifact-path spring-petclinic-customers-service/target/customers-service-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    
  4. Aşağıdaki komutla dağıtımlardan sonra uygulama durumunu sorgular.

    az spring app list --output table
    

    Bu komut aşağıdaki örneğe benzer bir çıktı oluşturur:

    Name               Location    ResourceGroup    Production Deployment    Public Url                                           Provisioning Status    CPU    Memory    Running Instance    Registered Instance    Persistent Storage
    -----------------  ----------  ---------------  -----------------------  ---------------------------------------------------  ---------------------  -----  --------  ------------------  ---------------------  --------------------
    api-gateway        eastus      xxxxxx-sp         default                  https://<service name>-api-gateway.azuremicroservices.io   Succeeded              1      2         1/1                 1/1                    -
    customers-service  eastus      <service name>         default                                                                       Succeeded              1      2         1/1                 1/1                    -
    

Hizmetleri doğrulama

Daha api-gateway önce gösterilen Genel Url'ye sahip bir tarayıcıdan ve customers-service biçiminde erişinhttps://<service name>-api-gateway.azuremicroservices.io.

Sahipler sayfasını gösteren PetClinic örnek uygulamasının ekran görüntüsü.

İpucu

Dağıtımlarla ilgili sorunları çözmek için aşağıdaki komutu kullanarak uygulama her çalıştırılırken az spring app logs --name <app name> --followgünlük akışını gerçek zamanlı olarak alabilirsiniz.

Ek uygulama dağıtma

PetClinic uygulamasının Admin Server, Visits ve Veterinerler gibi tüm özelliklerle çalışmasını sağlamak için diğer uygulamaları aşağıdaki komutlarla dağıtın:

az spring app create \
    --name admin-server \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi \
    --assign-endpoint
az spring app create \
    --name vets-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app create \
    --name visits-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app deploy \
    --name admin-server \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-admin-server/target/admin-server-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name vets-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-vets-service/target/vets-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name visits-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-visits-service/target/visits-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"

Kaynakları temizleme

Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Artık gerekli olmadığında kaynak grubunu silin; bu da kaynak grubundaki kaynakları siler. Azure CLI kullanarak kaynak grubunu silmek için aşağıdaki komutları kullanın:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Sonraki adımlar