這個教學示範如何使用 Docker 將你的 Spring Boot 應用程式容器化,並將你自己的 Docker 映像部署到 Azure App 服務 的 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建立網頁應用程式後,將目錄變更為
targetJAR 檔案所在的目錄並啟動網頁應用程式;例如: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。
當「 建立容器登錄檔 」頁面出現時,輸入 登錄檔名稱、 訂閱、 資源群組和 位置。 然後選擇 建立。
在設定中選擇存取鍵,並為管理員使用者開啟啟用開關。
設定 Maven 以將容器映像建置並推送至您的 Azure 容器註冊表
前往你 Spring Boot 應用程式已完成的專案目錄——例如 C:\SpringBoot\gs-spring-boot-docker\complete 或 /users/robert/SpringBoot/gs-spring-boot-docker/complete ——並用文字編輯器開啟 pom.xml 檔案。
使用本教學前一節中的最新
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>將
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>前往你的 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 服務 建立網頁應用程式,使用你的容器映像檔
選擇「 建立資源」的選單圖示,選擇 「計算」,然後選擇 網頁應用程式。
當 Web App on Linux 頁面出現時,請輸入以下資訊:
從下拉式清單中選擇 訂用帳戶。
選擇現有的 資源群組,或指定名稱來建立新的資源群組。
輸入應用程式 名稱的唯一名稱;例如: wingtiptoyslinux。
指定
Docker Container發佈。針對 [操作系統] 欄位,選擇 [Linux]。
選擇 區域。
接受 Linux 方案 並選擇現有的 App Service 方案,或選取 [建立新的],以建立新的 App Service 方案。
選擇 下一頁:Docker。
在 [Web 應用程式] 頁面上,選取 [Docker],然後輸入下列資訊:
選取 單一容器。
登錄:選擇您的容器,例如:wingtiptoysregistry。
映像:選擇先前建立的映像,例如:spring-boot-docker。
標籤:選擇影像的標籤,例如:最新的。
啟動指令:保持空白,因為映像檔已經有啟動指令。
輸入上述所有資訊後,選擇 評論 + 建立。
- 選取 檢閱 + 建立。
檢閱信息,然後選取 建立。
部署完成後,選取 [前往資源]。 部署頁面會顯示要存取應用程式的URL。
注意
Azure 會自動將網際網路請求映射到運行在 80 埠的嵌入式 Tomcat 伺服器。 不過,如果你將嵌入式 Tomcat 伺服器設定為在 8080 埠或自訂埠口執行,你需要在網頁應用程式中加入一個環境變數,定義嵌入式 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 App 使用自訂 Docker 映像」。