Published on

「Spring Boot API 開發:從 0 到 1」Day 37 部署 Spring Boot

Spring Boot 應用程式也算是開發的差不多了

現在是時候把它發佈到正式環境了,這篇文章就來看看,應該要怎麼做

建立 JAR 檔

指令方式

使用 Gradle 的話,只要在 專案根目錄 執行以下指令

Gradle 就會建立一個 可執行的 JAR 檔 ,這個 JAR 檔會包含你的應用程式和所有必要的依賴

./gradlew bootJar

build/libs 的目錄下,就會產生一個 JAR 檔

IDE 方式

如果不想打指令的話,也可以在 Gradle 的視窗,找到 Tasks > build > bootJar,在上面點兩下

一樣會產生 JAR 檔在 build/libs 的目錄下

執行 JAR 檔

在根目錄下面,執行以下的指令,就可以把應用程式跑起來了

java -jar build/libs/todolist-0.0.1-SNAPSHOT.jar

預設一樣是在 8080 port,可以開瀏覽器來確認看看

建立 Docker Image

使用 Docker 封裝 JAR 檔

在專案根目錄建立一個名為 Dockerfile 的檔案,內容如下

# 使用 OpenJDK 17 作為 base Image
FROM openjdk:17-jdk-slim

# 設置工作目錄
WORKDIR /app

# 把 build 完的 JAR 檔,複製到 container 裡面,改名成 app.jar
COPY build/libs/*.jar app.jar

# 暴露應用程序的 port(假設使用 8080 port)
EXPOSE 8080

# 運行 JAR 文件
ENTRYPOINT ["java", "-jar", "app.jar"]

在根目錄下面,執行指令,就會建立一個 docker Image

可以查看 Image 是不是有建立

執行 todoapp Image,可以查看一下,是否有成功執行

打開瀏覽器,瀏覽 8080 port,應該是可以成功的看到畫面

讓 Docker 也負責建立 JAR 檔

我們把 build 成 JAR 檔的工作,也交由 Docker 來執行

修改原本的 Dockfile,分成兩個階段 build JAR 檔 和 建立 Image

# 第一階段: build App

# 使用 gradle 8.10 版本的 JDK 17 Image
FROM gradle:8.10-jdk17 AS build

# 設置工作目錄
WORKDIR /app

# 複製相關的檔案
COPY build.gradle settings.gradle ./
COPY src ./src

# gradle build
RUN gradle build --no-daemon

# 第二階段:建立運行時 Image

# 使用 OpenJDK 17 作為 base Image
FROM openjdk:17-jdk-slim

# 設置工作目錄
WORKDIR /app

# 把 build 完的 JAR 檔,複製到 container 裡面,改名成 app.jar
COPY --from=build /app/build/libs/*.jar app.jar

# 暴露應用程序的 port(假設使用 8080 port)
EXPOSE 8080

# 運行 JAR 文件
ENTRYPOINT ["java", "-jar", "app.jar"]

重新建立 Image 的 2.0 版本

可以查看 Image 是不是有建立 2.0 的版本

執行 todoapp Image 2.0 版本,可以查看一下,是否有成功執行

打開瀏覽器,瀏覽 8080 port,應該是可以成功的看到畫面

同場加映:使用 Zeabur 部署應用程式

Zeabur 是一個簡單好用的部署平台

基本上只要點選幾下,幾分鐘後就可以上線一個應用程式

下面來看如何在 Zeabur 部署一個 Spring Boot 應用程式

Dashboard 點選 New Project

選擇一個專案的所在區域,這裡使用 Tokyo, Japan

選擇部署的方式,這裡使用 Github

選擇一個 Github 的 repo ,這裡當然是選我們的 Todo 應用程式

如果它在目錄裡面偵測到 Dockerfile,就會顯示使用 Docker,然後按 Deploy 部署

可以在專案 Deployments 裡面有一個 Building 正在進行,點選看一下 Build Logs

等到 Build 完後,就會自動切到 Runtime Logs,就可以看到有相關的 Spring Boot log

回到專案的頁面,選選 Networking 的選單

建立一個自定義的 Domain

確認新增後,就可以在專案上面看到相關的 Domain 資訊

api-test.http 裡面的 Domain 換成 ZeaburDomain 就可以來測試了

可以看到 API 都可以正常呼叫

結論

介紹了發佈 Spring Boot 應用程式的多種方法,包括建立 JAR 檔、使用 Docker 容器化,以及透過 Zeabur 平台進行雲端部署

這些方法各有優勢,開發者可以根據專案需求選擇最適合的方式,輕鬆將 Spring Boot 應用程式部署到生產環境中

同步刊登於 iTHome 鐵人賽 「Spring Boot API 開發:從 0 到 1」Day 37 部署 Spring Boot

圖片來源:AI 產生

參考連結