1. 概述
在本教程中,我們將學習如何使用 Podman Desktop 容器化一個 Spring Boot 應用程序。Podman 是一種容器化工具,它允許我們管理容器,而無需運行守護進程。
Podman Desktop 是一款桌面應用程序,具有圖形用户界面,用於使用 Podman 管理容器。
為了演示其使用方法,我們將創建一個簡單的 Spring Boot 應用程序,構建容器鏡像,並使用 Podman Desktop 運行容器。
2. 安裝 Podman 桌面版
我們需要在本地機器上安裝 Podman 桌面版,以便開始使用。它適用於 Windows、macOS 和 Linux 操作系統。下載安裝包後,我們可以按照安裝説明在我們的機器上設置 Podman 桌面版。
以下是設置 Podman 桌面版的一些重要步驟:
- Podman 應該已經在機器上安裝。如果沒有安裝,Podman 桌面版會自動為我們安裝它。
- 一旦 Podman 準備就緒,我們將會被提示啓動 Podman 機器。我們可以選擇默認設置或根據需要進行自定義。這在我們可以運行容器之前是必需的。
- 此外,對於 Windows,在我們可以運行 Podman 之前,我們需要啓用/安裝 WSL2(Windows 子系統 Linux)。
在安裝過程結束時,我們應該擁有一個可以由 Podman 桌面應用程序管理的 Podman 機器。 我們可以在其 儀表盤 部分進行驗證:
3. 創建 Spring Boot 應用程序
讓我們創建一個小型 Spring Boot 應用程序。該應用程序將包含一個 REST 控制器,當訪問 /hello</em/> 端點時,返回 “Hello, World!”</em/> 消息。
我們將使用 Maven 構建項目並創建一個 jar</em/> 文件。然後,我們將創建一個 Containerfile</em/>(在 Docker 的上下文中也稱為 Dockerfile)。 我們將使用此文件,使用 Podman Desktop 為我們的應用程序構建容器鏡像。
3.1. 項目設置
首先,我們將 Spring Boot Starter Web 依賴添加到我們的項目中:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>
此依賴項提供用於創建 Spring Boot Web 應用程序所需的庫。
3.2. 控制器
接下來,讓我們創建一個 REST 控制器:
@RestController
public class HelloWorldController {
@GetMapping("/hello")
public String helloWorld() {
return "Hello, World!";
}
}
我們這裏使用 @RestController 註解來標記該類為一個控制器,並使用 @GetMapping 註解將該方法映射到 /hello 端點。當訪問該端點時,它會返回 “Hello, World!” 消息。
3.3. 構建項目
可以使用 Maven 通過在終端中運行以下命令來構建項目:
mvn clean package
此命令編譯項目,運行測試,並在 target 目錄下創建一個 jar 文件。
4. Containerfile
現在我們已經準備好 Spring Boot 應用程序,接下來我們創建一個 Containerfile 以為我們的應用程序構建鏡像。 我們將在項目根目錄下創建此文件:
FROM openjdk:17-alpine
WORKDIR /app
COPY target/spring-boot-podman-desktop-1.0-SNAPSHOT.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]
本文件中:
- 首先,我們使用 openjdk:17-alpine 鏡像作為基礎鏡像。
- 然後,我們將工作目錄設置為 /app。
- 接着,我們將 Maven 生成的 jar 文件複製到 /app 目錄。
- 我們暴露端口 8080,這是 Spring Boot 應用程序的默認端口。
- 最後,我們使用 CMD 命令指定我們希望在容器啓動時使用 java -jar 命令運行 jar 文件。
5. 使用 Podman 桌面構建鏡像
一旦 Containerfile 配置完成,我們接下來將使用 Podman 桌面應用程序來創建鏡像。
首先,我們前往 鏡像 選項卡,然後點擊 構建 按鈕:
然後,我們填寫鏡像的詳細信息:
- 設置鏡像的名稱
- 選擇 Containerfile 的位置
- 使用項目目錄作為上下文目錄
- 我們還可以選擇鏡像的平台(們)。我們將使用默認值。
以下是一個參數和值的示例:
填寫完詳細信息後,我們可以點擊 構建 按鈕來構建鏡像。 構建完成後,我們可以找到鏡像在 鏡像 選項卡中。
6. 運行容器
現在我們已經準備好鏡像,可以使用鏡像運行容器。可以通過在 鏡像 部分,點擊與 hello-world-demo 鏡像旁邊的 運行 按鈕來完成此操作:
6.1. 啓動容器
接下來,我們將填充容器的詳細信息。我們在 Containerfile 中設置的屬性將預先填充,並且可以根據需要進行自定義:
在此情況下,端口映射和命令已預先填充。如果需要,還可以設置其他屬性,例如環境變量、卷等。 還可以設置容器的名稱。
在填充詳細信息後,可以點擊 啓動容器 按鈕來啓動容器。 這將打開 容器詳情 部分並顯示容器日誌:
6.2. 測試應用程序
容器啓動後,可以通過打開瀏覽器並導航到 http://localhost:8080/hello 訪問應用程序。您將在頁面上看到 “Hello, World!” 消息:
6.3. 停止容器
要停止容器,請點擊“容器詳情”部分上方的 停止 按鈕。
或者,我們可以在容器列表中點擊要停止的容器的 停止 按鈕:
7. 結論
在本文中,我們學習瞭如何使用 Podman Desktop 容器化 Spring Boot 應用程序。我們創建了一個包含 API 端點的簡單 Spring Boot 應用程序,併為它創建了 Containerfile。然後,我們使用 Podman Desktop 應用程序構建了鏡像,並使用鏡像運行了容器。最後,容器啓動後,我們測試了我們的端點是否正常工作。