在 Azure App 服務 上將 Spring Boot 應用程式部署至 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. 建立 Web 應用程式之後,請將目錄變更為 target JAR 檔案所在的目錄並啟動 Web 應用程式;例如:

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

    curl http://localhost
    
  7. 您應該會看到下列訊息顯示: Hello Docker World

    Browse Sample App Locally

建立 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]。

    Create a new Azure Container Registry

  3. 顯示 [ 建立容器登錄 ] 頁面時,請輸入 [登錄名稱]、[ 用帳戶]、 [資源群組] 和 [ 位置]。 然後選取建立

    Configure Azure Container Registry settings

  4. 在 [設定] 底下選取 [存取密鑰],然後開啟 管理員 使用者後方的 [已啟用] 參數。

    Enable admin user UI in the Azure portal

設定 Maven 以將映射建置至您的 Azure Container Registry

  1. 流覽至 Spring Boot 應用程式已完成的專案目錄(例如:“C:\SpringBoot\gs-spring-boot-docker\complete” 或 “/users/robert/SpringBoot/gs-spring-boot-docker/complete”),並使用文本編輯器開啟 pom.xml 檔案。

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

    <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 版。

    在這裡mcr.microsoft.com/openjdk/jdk:11-ubuntu指定基底映像<from>/<image>。 指定要從 中 <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
    

注意

  1. 此命令 az acr login ... 會嘗試登入 Azure Container Registry,否則您需要提供 <username> jib-maven-plugin <password> ,請參閱 jib 中的驗證方法
  2. 當您使用 Jib 將映射推送至 Azure Container Registry 時,映射不會使用 Dockerfile,請參閱 檔以取得詳細數據。

使用容器映像在linux上建立web應用程式 Azure App 服務

  1. 流覽至 Azure 入口網站 並登入。

  2. 單擊 [建立資源] 的功能表圖示,選取 [計算],然後選取 [Web 應用程式]。

    Create a new web app in the Azure portal

  3. 當 [Linux 上的 Web 應用程式] 頁面顯示時,請輸入下列資訊:

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

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

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

    • 指定 Docker Container [ 發佈]。

    • 選擇 [Linux ] 作為 [操作系統]。

    • 請選取 [區域]

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

    • [下一步:Docker]。

    Click the Next: Docker button to proceed.

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

    • 選取 [單一容器]。

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

    • 映射:選取先前建立的映射,例如:“spring-boot-docker

    • 卷標:選擇影像的標籤;例如:“latest

    • 啟動命令:將它保留空白,因為映射已經有啟動命令

    輸入上述所有信息之後,請選取 [ 檢閱 + 建立]。

    Finish by selecting Review + Create.

    • 選取 [檢閱 + 建立]。

檢閱資訊並選取 [建立]

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

Get URL of deployment

注意

Azure 會自動將因特網要求對應至埠 - 80 上執行的內嵌 Tomcat 伺服器。 不過,如果您將內嵌 Tomcat 伺服器設定為在埠 - 8080 或自定義埠上執行,則必須將環境變數新增至 Web 應用程式,以定義內嵌 Tomcat 伺服器的埠。 若要這樣做,請使用下列步驟:

  1. 流覽至 Azure 入口網站 並登入。

  2. 選取 Web 應用程式的圖示,然後從 [應用程式服務] 頁面選取您的應用程式。

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

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

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

Saving a custom port number in the Azure portal

清除資源

不再需要時,請使用 Azure 入口網站 刪除本文中建立的資源,以避免產生非預期的費用。

下一步

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

另請參閱

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

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

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

如需開始使用您自己的 Spring Boot 應用程式的說明,請參閱 上的 Spring Initializrhttps://start.spring.io/

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

如需如何搭配 Azure 使用自訂 Docker 映像的其他範例,請參閱 在 Linux 上使用 Azure Web 應用程式的自定義 Docker 映像。