Java Spring Boot 项目打包部署到 Docker 的完整指南

在这篇文章中,我们将一步一步指导你完成一个 Java Spring Boot 项目的 Docker 打包和部署。对于刚入行的小白来说,这可能看起来有些复杂,但我们会一起来克服每一个步骤。

整体流程概述

以下是整个部署过程的步骤概述:

步骤 说明
1. 创建 Spring Boot 项目 使用 Spring Initializr 创建一个基本的 Spring Boot 项目。
2. 编写代码 在项目中添加必要的代码。
3. 打包项目 使用 Maven 打包项目生成 Jar 包。
4. 创建 Dockerfile 编写 Dockerfile,以定义如何构建 Docker 镜像。
5. 构建 Docker 镜像 使用 Docker 命令构建镜像。
6. 运行 Docker 容器 启动容器并验证应用程序运行情况。

详细步骤

步骤一:创建 Spring Boot 项目

你可以使用 Spring Initializr([ ZIP 包并解压缩。

步骤二:编写代码

在你的 IDE 中打开项目,编写一些基本的 REST 控制器。

示例代码:

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Docker!";
    }
}

上面的代码创建了一个简单的 REST API,访问 /hello 路径时返回的字符串为 "Hello, Docker!"。

步骤三:打包项目

首先确保你安装了 Maven,并在项目的根目录下运行以下命令:

mvn clean package

此命令会将项目打包成一个可执行的 JAR 文件,通常位于 target/ 目录中。

步骤四:创建 Dockerfile

在项目的根目录下创建一个名为 Dockerfile 的文件,添加以下内容:

# 使用 Java 官方镜像作为基础镜像
FROM openjdk:11-jre-slim

# 将 Jar 包复制到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar

# 设置容器启动时运行 Jar 包
ENTRYPOINT ["java", "-jar", "/app.jar"]
  • FROM openjdk:11-jre-slim:指定基础镜像为 OpenJDK 11 的精简版。
  • COPY target/demo-0.0.1-SNAPSHOT.jar app.jar:将前面打包生成的 Jar 文件复制到容器中,并重命名为 app.jar
  • ENTRYPOINT ["java", "-jar", "/app.jar"]:Docker 启动时运行 app.jar

步骤五:构建 Docker 镜像

现在,你可以构建 Docker 镜像了。在项目根目录下运行以下命令:

docker build -t demo-app .

这个命令中的 -t demo-app 用于标记创建的镜像名为 demo-app. 表示当前目录是 Dockerfile 所在的目录。

步骤六:运行 Docker 容器

构建完成后,你可以运行 Docker 容器:

docker run -p 8080:8080 demo-app

这里的 -p 8080:8080 将宿主机的 8080 端口映射到容器内部的 8080 端口。访问 http://localhost:8080/hello 将返回 "Hello, Docker!"。

总结

经过上面的步骤,你已经成功地将 Java Spring Boot 项目打包并部署到 Docker 中。这个过程可以让你对 Docker 及其与 Spring Boot 应用的集成有一个基本的了解。

关键流程可视化

以下是流程的饼状图展示,便于理解各个步骤在整个流程中所占的比例:

pie
    title Deployment Steps
    "Create Spring Boot Project": 15
    "Write Code": 20
    "Package Project": 15
    "Create Dockerfile": 15
    "Build Docker Image": 20
    "Run Docker Container": 15

交互流程可视化

以下是每个步骤的交互流程图,帮助你了解不同步骤之间的关系:

sequenceDiagram
    participant User
    participant SpringBootApp
    participant Docker
    
    User->>SpringBootApp: Create Project
    User->>SpringBootApp: Write Code
    User->>SpringBootApp: Package Project
    User->>Docker: Create Dockerfile
    User->>Docker: Build Docker Image
    User->>Docker: Run Docker Container
    Docker->>User: Application Running

希望你在这篇指南中找到了所需的信息!记住,随着经验的增加,你会越来越熟练地使用这些工具和技术。祝你在开发的旅程中取得成功!