將 Spring Boot 應用程式部署至 Azure App 服務 上的 Linux

這個教學示範如何使用 Docker 將你的 Spring Boot 應用程式容器化,並將你自己的 Docker 映像部署到 Azure App 服務 的 Linux 主機上。

先決條件

要完成本教學步驟,你需要具備以下先決條件:

注意

由於本教學的虛擬化需求,你無法在虛擬機上依照本文的步驟操作。 你必須使用啟用虛擬化功能的實體電腦。

在 Docker 使用者入門 Web 應用程式上建立 Spring Boot

下列步驟會逐步解說建立簡單 Spring Boot Web 應用程式並在本機測試所需的步驟。

  1. 打開命令提示字元,建立一個本地目錄來存放你的應用程式,然後切換到該目錄;例如:

    mkdir SpringBoot
    cd SpringBoot
    
  2. 將 Docker 快速入門上的 Spring Boot 範例項目複製到您所建立的目錄中;例如:

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. 將目錄變更為已完成的專案;例如:

    cd gs-spring-boot-docker/complete
    
  4. 使用 Maven 建置 JAR 檔案;例如:

    mvn package
    
  5. 建立網頁應用程式後,將目錄變更為 target JAR 檔案所在的目錄並啟動網頁應用程式;例如:

    cd target
    java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
    
  6. 使用網頁瀏覽器在本機開啟 Web 應用程式以進行測試。 例如,如果您有 curl 可用,而且您已將 Tomcat 伺服器設定為在埠 80 上執行:

    curl http://localhost
    
  7. 你會看到以下訊息顯示: Hello Docker World

    在本機瀏覽範例應用程式

建立一個 Azure Container Registry,作為私人 Docker 登錄檔使用

下列步驟會逐步解說如何使用 Azure 入口網站來建立 Azure Container Registry。

注意

如果您想要使用 Azure CLI 而非 Azure 入口網站,請遵循 使用 Azure CLI 2.0建立私人 Docker 容器登錄中的步驟。

  1. 瀏覽到 Azure 入口網站 ,然後登入。

    在 Azure 入口網站登入帳號後,請依照「使用 Azure 入口網站建立私人 Docker 容器登錄檔」文章中的步驟操作。 為求方便,以下步驟是對這些指示的改寫。

  2. 選擇「新」選單圖示,選擇容器,然後選擇 Azure Container Registry。

    建立新的 Azure Container Registry

  3. 當「 建立容器登錄檔 」頁面出現時,輸入 登錄檔名稱、 訂閱、 資源群組和 位置。 然後選擇 建立。

    配置 Azure Container Registry 設定

  4. 在設定中選擇存取鍵,並為管理員使用者開啟啟用開關。

    在 Azure 入口中啟用系統管理員使用者 UI

設定 Maven 以將容器映像建置並推送至您的 Azure 容器註冊表

  1. 前往你 Spring Boot 應用程式已完成的專案目錄——例如 C:\SpringBoot\gs-spring-boot-docker\complete 或 /users/robert/SpringBoot/gs-spring-boot-docker/complete ——並用文字編輯器開啟 pom.xml 檔案。

  2. 使用本教學前一節中的最新 jib-maven-plugin 版本、登入伺服器值,以及 Azure Container Registry 的存取設定,更新 <properties> 檔案中的 集合。 例如:

    <properties>
       <jib-maven-plugin.version>3.2.0</jib-maven-plugin.version>
       <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix>
       <java.version>1.8</java.version>
    </properties>
    
  3. 將 jib-maven-plugin 添加至 <plugins> 集合中的 pom.xml 檔案。 此範例使用 3.2.0 版。

    在 <from>/<image>指定基礎影像,這裡 mcr.microsoft.com/openjdk/jdk:11-ubuntu。 指定要從 <to>/<image> 中的基底映像建置的最終映像名稱。

    認證 {docker.image.prefix} 是先前登錄頁面上的 登入伺服器 。 {project.artifactId} 是專案第一個 Maven 組建中 JAR 檔案的名稱和版本號碼。

    <plugin>
      <artifactId>jib-maven-plugin</artifactId>
      <groupId>com.google.cloud.tools</groupId>
      <version>${jib-maven-plugin.version}</version>
      <configuration>
         <from>
             <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image>
         </from>
         <to>
             <image>${docker.image.prefix}/${project.artifactId}</image>
         </to>
      </configuration>
    </plugin>
    
  4. 前往你的 Spring Boot 應用程式已完成的專案目錄,執行以下指令來重建應用程式,並將容器推送到你的 Azure Container Registry:

    az acr login --name wingtiptoysregistry && mvn compile jib:build
    

注意

該指令az acr login ...嘗試登入 Azure Container Registry。 否則,你需要為 jib-maven-plugin 提供 <username> 和 <password>。 欲了解更多,請參閱「jib 中的認證方法 」。

當你用 Jib 把映像檔推送到 Azure Container Registry 時,映像檔不會用到 Dockerfile。 如需詳細資訊,請參閱 這篇文章 。

在 Linux 上使用 Azure App 服務 建立網頁應用程式,使用你的容器映像檔

  1. 瀏覽到 Azure 入口網站 ,然後登入。

  2. 選擇「 建立資源」的選單圖示,選擇 「計算」,然後選擇 網頁應用程式。

    在 Azure 入口網站中建立新的 Web 應用程式

  3. 當 Web App on Linux 頁面出現時,請輸入以下資訊:

    • 從下拉式清單中選擇 訂用帳戶。

    • 選擇現有的 資源群組,或指定名稱來建立新的資源群組。

    • 輸入應用程式 名稱的唯一名稱;例如: wingtiptoyslinux。

    • 指定 Docker Container發佈。

    • 針對 [操作系統] 欄位,選擇 [Linux]。

    • 選擇 區域。

    • 接受 Linux 方案 並選擇現有的 App Service 方案,或選取 [建立新的],以建立新的 App Service 方案。

    • 選擇 下一頁:Docker。

    點擊下一步:Docker 按鈕以繼續。

    在 [Web 應用程式] 頁面上,選取 [Docker],然後輸入下列資訊:

    • 選取 單一容器。

    • 登錄:選擇您的容器,例如:wingtiptoysregistry。

    • 映像:選擇先前建立的映像,例如:spring-boot-docker。

    • 標籤:選擇影像的標籤,例如:最新的。

    • 啟動指令:保持空白,因為映像檔已經有啟動指令。

    輸入上述所有資訊後,選擇 評論 + 建立。

    選取 [檢閱 + 建立] 以完成。

    • 選取 檢閱 + 建立。

檢閱信息,然後選取 建立。

部署完成後,選取 [前往資源]。 部署頁面會顯示要存取應用程式的URL。

取得部署 URL

注意

Azure 會自動將網際網路請求映射到運行在 80 埠的嵌入式 Tomcat 伺服器。 不過,如果你將嵌入式 Tomcat 伺服器設定為在 8080 埠或自訂埠口執行,你需要在網頁應用程式中加入一個環境變數,定義嵌入式 Tomcat 伺服器的埠口。 要加入環境變數,請使用以下步驟:

  1. 瀏覽到 Azure 入口網站 ,然後登入。

  2. 選取 Web Apps圖示,然後從 App Services 頁面中選取您的應用程式。

  3. 選取左側瀏覽窗格中 組態。

  4. 在 [應用程式設定] 區段中,新增名為 WEBSITES_PORT 的新設定,然後輸入值的自定義埠號碼。

  5. 選取 [確定] 。 然後選擇 儲存。

在 Azure 入口網站中儲存自定義埠號碼

清除資源

當你不再需要資源時,使用 Azure 入口網站刪除它們。 刪除資源有助於避免意外收費。

後續步驟

若要深入瞭解 Spring 和 Azure,請繼續前往 Azure 上的 Spring 檔中心。

另請參閱

如需在 Azure 上使用 Spring Boot 應用程式的詳細資訊,請參閱下列文章:

如需搭配 Java 使用 Azure 的詳細資訊,請參閱 適用於 Java 開發人員的 Azure,以及 使用 Azure DevOps 和 Java。

如需 Docker 上 Spring Boot 範例項目的進一步詳細數據,請參閱 Docker 快速入門上的 Spring Boot。

如需有關開始使用您自己的 Spring Boot 應用程式的幫助,請參閱位於 的 https://start.spring.io/。

如需開始建立簡單 Spring Boot 應用程式的詳細資訊,請參閱 https://start.spring.io/的 Spring Initializr。

想了解更多如何在 Azure 使用自訂 Docker 映像的範例,請參見「在 Linux 上為 Azure Web App 使用自訂 Docker 映像」。