將 Spring Boot 應用程式部署至 Azure App Service 上的 Linux
本教學課程會逐步解說如何使用
先決條件
若要完成本教學課程中的步驟,您必須具備下列必要條件:
- Azure 訂用帳戶;如果您還沒有 Azure 訂用帳戶,則可以 啟用
MSDN 訂閱者權益,或註冊 免費 Azure 帳戶 。 - Azure Command-Line 命令列介面(CLI)。
- 支援的 Java 開發工具套件 (JDK)。 如需在 Azure 上開發時可用的 JDK 詳細資訊,請參閱 Azure 和 Azure Stack上的 Java 支援。
- Apache Maven 建置工具 (第 3 版)。
- Git 用戶端。
- Docker 用戶端。
注意
由於本教學課程的虛擬化需求,您無法遵循虛擬機上本文中的步驟;您必須使用已啟用虛擬化功能的實體電腦。
在 Docker 使用者入門 Web 應用程式上建立 Spring Boot
下列步驟會逐步解說建立簡單 Spring Boot Web 應用程式並在本機測試所需的步驟。
開啟命令提示符,建立一個本機目錄來保存您的應用程式,然後切換至該目錄;例如:
mkdir SpringBoot cd SpringBoot
將 Docker 快速入門上的 Spring Boot 範例項目複製到您所建立的目錄中;例如:
git clone https://github.com/spring-guides/gs-spring-boot-docker.git
將目錄變更為已完成的專案;例如:
cd gs-spring-boot-docker/complete
使用 Maven 建置 JAR 檔案;例如:
mvn package
建立 Web 應用程式之後,請將目錄變更為 JAR 檔案所在的
target
目錄,然後啟動 Web 應用程式;例如:cd target java -jar spring-boot-docker-complete-0.0.1-SNAPSHOT.jar --server.port=80
使用網頁瀏覽器在本機開啟 Web 應用程式以進行測試。 例如,如果您有 curl 可用,而且您已將 Tomcat 伺服器設定為在埠 80 上執行:
curl http://localhost
您應該會看到下列訊息顯示:Hello Docker World
建立 Azure Container Registry 以作為私人 Docker 登錄使用
下列步驟會逐步解說如何使用 Azure 入口網站來建立 Azure Container Registry。
注意
如果您想要使用 Azure CLI 而非 Azure 入口網站,請遵循 使用 Azure CLI 2.0建立私人 Docker 容器登錄中的步驟。
-
在 Azure 入口網站上登入帳戶之後,請遵循 文章『使用 Azure 入口網站建立私人 Docker 容器登錄』中的步驟,以下為方便起見,會加以改述。
按一下 [新增] 選單圖示,選取 [容器],然後選取 [Azure Container Registry]。
顯示 [建立容器登錄] 頁面
時,輸入 登錄名稱 、訂用帳戶 、資源群組 ,以及Location 。 然後選擇 建立。在 [設定] 底下選取 [存取 金鑰],然後在 [系統管理員使用者]後方開啟 [啟用] 參數。
設定 Maven 以將容器映像建置並推送至您的 Azure 容器註冊表
流覽至 Spring Boot 應用程式已完成的項目目錄 - 例如,C:\SpringBoot\gs-spring-boot-docker\complete 或 /users/robert/SpringBoot/gs-spring-boot-docker/complete - 並使用文本編輯器開啟 pom.xml 檔案。
使用本教學課程上一節中最新版的
<properties>
、登入伺服器值,以及存取 Azure Container Registry 的設定,更新 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>
將 jib-maven-plugin 新增至
<plugins>
檔案中的 集合。 此範例使用 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>
瀏覽至 Spring Boot 應用程式已完成的專案目錄,然後執行下列命令來重建應用程式,並將容器推送至您的 Azure Container Registry:
az acr login --name wingtiptoysregistry && mvn compile jib:build
注意
在 Azure App Service 上使用容器映像在 Linux 上建立 Web 應用程式
單擊 [建立資源] 的功能表圖示,選取 [計算],然後選取 [Web 應用程式]。
當 Linux 頁面上的
Web 應用程式顯示時,請輸入下列資訊: 從下拉式清單中選擇 訂用帳戶。
選擇現有的 資源群組,或指定名稱來建立新的資源群組。
輸入 應用程式名稱的唯一名稱,;例如:wingtiptoyslinux
指定
Docker Container
發佈。針對 [操作系統] 欄位,選擇 [Linux]。
選擇 區域。
接受 Linux 方案 並選擇現有的 App Service 方案,或選取 [建立新的],以建立新的 App Service 方案。
點選「下一步」:Docker。
在 [Web 應用程式] 頁面上,選取 [Docker],然後輸入下列資訊:
選取 單一容器。
登錄:選擇您的容器,例如:wingtiptoysregistry。
映像:選擇先前建立的映像,例如:spring-boot-docker。
標籤:選擇影像的標籤,例如:最新的。
啟動命令:保持空白,因為映像檔已經包含啟動命令。
輸入上述所有信息之後,請選取 檢視 + 建立。
- 選取 檢閱 + 建立。
檢閱信息,然後選取 建立。
部署完成時,請選擇 移至資源。 部署頁面會顯示要存取應用程式的URL。
注意
Azure 會自動將因特網要求對應至埠 - 80 上執行的內嵌 Tomcat 伺服器。 不過,如果您將內嵌 Tomcat 伺服器設定為在埠 - 8080 或自定義埠上執行,則必須將環境變數新增至 Web 應用程式,以定義內嵌 Tomcat 伺服器的埠。 若要這樣做,請使用下列步驟:
選取 Web Apps圖示,然後從 App Services 頁面中選取您的應用程式。
選取左側瀏覽窗格中 組態。
在 [應用程式設定] 區段中,新增名為 WEBSITES_PORT 的新設定,然後輸入值的自定義埠號碼。
選取 [確定] 。 然後選擇 儲存。
清除資源
不再需要時,請使用 Azure 入口網站 刪除本文中建立的資源,以避免產生非預期的費用。
後續步驟
若要深入瞭解 Spring 和 Azure,請繼續前往 Azure 上的 Spring 檔中心。
另請參閱
如需在 Azure 上使用 Spring Boot 應用程式的詳細資訊,請參閱下列文章:
- 在 Azure Container Service Kubernetes 叢集上部署 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 應用程式自訂 Docker 映像。