51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

使用 Podman Desktop 容器化 Spring Boot 应用

1、概览 {#1概览}

本文将带你了解如何使用 Podman DesktopSpring Boot 应用进行容器化。Podman 是一种容器化工具,它允许我们在不需要守护进程的情况下管理容器。

Podman Desktop 是一款具有图形用户界面(GUI)的桌面应用,用于使用 Podman 管理容器。

为了演示其用法,我们要创建一个简单的 Spring Boot 应用,构建容器镜像,并使用 Podman Desktop 运行容器。

2、安装 Podman Desktop {#2安装-podman-desktop}

我们需要在本地计算机上 安装 Podman Desktop 才能开始使用。它适用于 Windows、macOS 和 Linux 操作系统。下载安装程序后,按照安装说明在机器上安装 Podman Desktop 即可。

以下是设置 Podman Desktop 的几个重要步骤:

  • 机器上应已安装 Podman。如果没有安装,Podman Desktop 会提示并为我们安装。
  • Podman 准备就绪后,系统会提示我们启动 Podman 虚拟机。我们可以选择默认设置,也可以根据需要自定义设置。在运行容器之前,这是必须的。
  • 此外,对于 Windows,需要启用/安装 WSL2(Windows Subsystem for Linux),然后才能运行 Podman。

在安装过程结束时,我们应该有一个正在运行的 Podman 虚拟机,并可以使用 Podman Desktop 进行管理。

可以在 "Dashboard"(仪表盘)部分看到:

Podman 仪表盘

3、创建 Spring Boot 应用 {#3创建-spring-boot-应用}

创建一个小型 Spring Boot 应用。该应用有一个 REST Controller,当我们访问 /hello 端点时,它返回一条 "Hello, World!" 消息。

使用 Maven 来构建项目并创建一个可执行的 JAR 文件。然后,创建一个 Containerfile(在 Docker 中也称为 Dockerfile),Podman Desktop 通过使用这个文件来为我们的应用构建一个容器镜像。

3.1、项目设置 {#31项目设置}

首先,在项目中添加 Spring Boot Starter Web 依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>3.3.1</version>
    </dependency>
</dependencies>

该依赖为创建 Spring Boot Web 应用提供了必要的库。

3.2、Controller {#32controller}

创建 REST Controller:

@RestController
public class HelloWorldController {
    @GetMapping("/hello")
    public String helloWorld() {
        return "Hello, World!";
    }
}

如上,使用 @RestController 注解将类标记为 Controller,并使用 @GetMapping 注解将方法映射到 /hello 端点。当访问该端点时,它会返回 "Hello, World!" 消息。

3.3、构建项目 {#33构建项目}

在终端运行以下命令,使用 Maven 构建项目:

mvn clean package

该命令会编译项目、运行测试并在 target 目录下创建 jar 文件。

4、Containerfile {#4containerfile}

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 镜像作为基础镜像。
  • 接下来,将工作目录(WORKDIR)设置为 /app
  • 然后,将 Maven 生成的 jar 文件复制到 /app 目录。
  • 暴露 Spring Boot 应用的默认端口 8080
  • 最后,使用 CMD 命令指定要在容器启动时使用 java -jar 命令运行 jar 文件。

5、使用 Podman Desktop 创建镜像 {#5使用-podman-desktop-创建镜像}

Containerfile 就绪后,使用 Podman Desktop 创建镜像。

首先,进入 "Images" 部分,点击 "Build" 按钮:

Podman 镜像视图,选择 Button 按钮

接下来,填写镜像的细节:

  • 设置镜像名称。
  • 选择 Containerfile
  • 使用项目目录作为上下文目录。
  • 还可以选择镜像的平台(Platform),这里使用默认值。

示例如下:

Podman 创建镜像的参数

填写完详细信息后,单击 "Build" 按钮来构建镜像。构建完成后,可以在 "Images" 部分找到镜像。

6、运行容器 {#6运行容器}

镜像就绪后,使用该镜像运行一个容器。

单击 "Images" 部分中 hello-world-demo 镜像旁边的 "Run" 按钮:

从 podman 镜像部分运行容器

6.1、启动容器 {#61启动容器}

接下来,填写容器的详细信息。在 Containerfile 中设置的属性会被预填充进去。

可以根据需要进行自定义:

在运行容器之前设置其属性

在本例中,端口映射和命令已经填好。如有需要,还可以设置其他属性,如环境变量、Volume 等。还可以设置容器的名称。

填写完详细信息后,可以单击 "Start Container"(启动容器)按钮来启动容器。

可以看到容器日志:

Podman 容器启动日志

6.2、测试应用 {#62测试应用}

容器启动后,可以通过打开浏览器并访问 http://localhost:8080/hello 来请求应用。

你可以在页面上看到 "Hello, World!" 消息:

在浏览器中测试容器 API

说明一切 Ok。

6.3、停止容器 {#63停止容器}

要停止容器,可以单击上面 "Container" 详情部分中的 "Stop" 按钮。

或者,也可以进入容器列表,点击容器的 "Stop" 按钮:

在 Podman Desktop 的 Containers 部分停止容器

7、总结 {#7总结}

本文介绍了如何使用 Podman Desktop 对 Spring Boot 应用进行容器化。

首先,创建了一个简单 Spring Boot 应用,并暴露了一个 API。然后,为其创建了一个 Containerfile。接着,使用 Podman Desktop 构建了一个镜像,并使用该镜像运行了一个容器。最后,测试了容器启动后端点是否正常工作。


Ref:https://www.baeldung.com/spring-boot-podman-desktop

赞(2)
未经允许不得转载:工具盒子 » 使用 Podman Desktop 容器化 Spring Boot 应用