共用方式為


快速入門:建置應用程式並將其部署至 Azure Spring Apps

注意

Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但是您暫時還是會在某些位置看到舊的名稱。我們正在致力更新螢幕擷取畫面、影片和圖表等資產。

本文適用於: ✔️基本/標準 ❌ 企業

本快速入門說明如何使用 Azure CLI 建置 Spring 應用程式並將其部署至 Azure Spring Apps。

必要條件

下載範例應用程式

使用下列步驟來下載範例應用程式。 如果您已使用 Azure Cloud Shell,請切換至本機命令提示字元。

  1. 建立新的資料夾,並複製範例應用程式存放庫。

    mkdir source-code
    
    cd source-code
    
    git clone https://github.com/Azure-Samples/azure-spring-apps-samples
    
  2. 流覽至存放庫目錄。

    cd azure-spring-apps-samples
    

部署 PlanetWeatherProvider

使用下列步驟來部署 PlanetWeatherProvider 專案。

  1. 在 Azure Spring Apps 實例中為 PlanetWeatherProvider 專案建立應用程式。

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

    若要啟用自動服務註冊,您已將應用程式的名稱指定為專案appsettings.json檔案中的 值spring.application.name

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

    此命令可能需要幾分鐘才能完成執行。

  2. 將目錄變更為 PlanetWeatherProvider 項目資料夾。

    cd steeltoe-sample/src/planet-weather-provider
    
  3. 建立要部署的二進位檔和.zip檔案。

    dotnet publish -c release -o ./publish
    

    提示

    項目檔包含下列 XML,在將二進位檔寫入至 ./publish 資料夾之後,在.zip檔案中封裝二進位檔:

    <Target Name="Publish-Zip" AfterTargets="Publish">
      <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/publish-deploy-planet.zip" Overwrite="true" />
    </Target>
    
  4. 將專案部署到 Azure。

    在執行下列命令之前,請確定命令提示字元位於專案資料夾中。

    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
    

    選項 --main-entry 會指定從 .zip 檔案根資料夾到 包含應用程式進入點之.dll 檔案的相對路徑。 服務上傳 .zip 檔案之後,它會擷取所有檔案和資料夾,然後嘗試在指定的 .dll 檔案中執行進入點。

    此命令可能需要幾分鐘才能完成執行。

部署 SolarSystemWeather

使用下列步驟來部署 SolarSystemWeather 專案。

  1. 在您的 Azure Spring Apps 實例中為專案建立另一個應用程式。

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

    solar-system-weather是專案appsettings.json檔案中指定的SolarSystemWeather名稱。

    此命令可能需要幾分鐘才能完成執行。

  2. 將目錄變更為 SolarSystemWeather 專案。

    cd ../solar-system-weather
    
  3. 建立要部署的二進位檔和.zip檔案。

    dotnet publish -c release -o ./publish
    
  4. 將專案部署到 Azure。

    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
    

    此命令可能需要幾分鐘才能完成執行。

指派公用端點

測試應用程式之前,請先取得對應用程式的 HTTP GET 要求 solar-system-weather 公用端點。

  1. 執行下列命令以指派端點。

    az spring app update --name solar-system-weather --assign-endpoint true
    
  2. 執行下列命令以取得端點的 URL。

    Windows:

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

    Linux:

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

測試應用程式

若要測試應用程式,請將 GET 要求傳送至 solar-system-weather 應用程式。 在瀏覽器中,流覽至附加至公用URL /weatherforecast 。 例如:https://servicename-solar-system-weather.azuremicroservices.io/weatherforecast

輸出為 JSON:

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

此回應顯示這兩個 Spring 應用程式都正常運作。 應用程式 SolarSystemWeather 會傳回從 PlanetWeatherProvider 應用程式擷取的數據。

本文說明如何將 Spring 應用程式建置和部署至 Azure Spring Apps。 您可以使用 Azure CLI、Maven 外掛程式或 Intellij。 本文說明每個替代方案。

必要條件

在本機建置 Spring 應用程式

使用下列命令複製範例存放庫、流覽至範例資料夾,然後建置專案。

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

編譯專案需要 5-10 分鐘。 編譯專案時,您應該在其各自的資料夾中,針對每個服務都有個別的 JAR 檔案。

在 Azure Spring Apps 上建立和部署應用程式

使用下列步驟,使用 CLI 在 Azure Spring Apps 上建立及部署應用程式。

  1. 如果您先前的快速入門中未執行下列命令,請立即執行它們以設定 CLI 預設值。

    az configure --defaults group=<resource-group-name> spring=<service-name>
    
  2. 建立 PetClinic 的兩個核心 Spring 應用程式: api-gatewaycustomers-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. 部署在上一個步驟中建置的 JAR 檔案。

    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. 使用下列命令在部署之後查詢應用程式狀態。

    az spring app list --output table
    

    此命令所產生的輸出與下列範例類似:

    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                    -
    

確認服務

使用先前顯示的公用 URL 從瀏覽器存取 api-gatewaycustomers-service ,格式為 https://<service name>-api-gateway.azuremicroservices.io

顯示 [擁有者] 頁面的 PetClinic 範例應用程式的螢幕快照。

提示

若要疑難解答部署,您可以使用下列命令,在應用程式執行 az spring app logs --name <app name> --follow時即時取得記錄串流。

部署額外的應用程式

若要讓 PetClinic 應用程式使用 管理員 Server、Visits 和獸醫等所有功能運作,請使用下列命令部署其他應用程式:

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"

清除資源

如果您打算繼續進行後續的快速入門和教學課程,您可以讓這些資源留在原處。 如果不再需要,請刪除資源群組,這會刪除資源群組中的資源。 若要使用 Azure CLI 刪除資源群組,請使用下列命令:

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

下一步