SpringBoot 应用入门与 Docker 化部署实战

SpringBoot 应用入门与 Docker 化部署实战

本文是《Java SpringBoot 多人协作平台》系列课程第二节的学习笔记整理,介绍如何使用 SpringBoot 构建一个基础的登录接口,并通过 Docker 将应用容器化部署。


一、SpringBoot 快速构建 REST 接口

1.1 什么是 SpringBoot?

Spring Boot 是基于 Spring 框架的快速开发脚手架,通过约定优于配置的理念,极大简化了 Spring 应用的初始搭建和开发流程。开发者无需繁琐的 XML 配置,即可快速启动一个生产级别的 Web 应用。

1.2 编写一个 Login 接口

下面以一个最简单的用户登录接口为例,演示 SpringBoot 如何处理 HTTP POST 请求。

接口说明
属性
请求方式 POST
接口路径 /login
请求参数 usernamepassword
返回值 String
代码实现
less 复制代码
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@RequestParam("username") String username,
                    @RequestParam("password") String password) {
    System.out.println("username: " + username + " password: " + password);
    return "";
}
关键注解说明
  • @RequestMapping:用于映射 HTTP 请求路径与方法。value 指定路由路径,method 指定请求方式(此处为 POST)。
  • @RequestParam:用于绑定 HTTP 请求中的表单参数或 Query 参数到方法入参。usernamepassword 会从请求体(application/x-www-form-urlencoded)或 URL 参数中自动提取。
测试接口

可以使用 curl 或 Postman 对接口进行测试:

bash 复制代码
curl -X POST http://localhost:8080/login \
  -d "username=admin&password=123456"

控制台将输出:

makefile 复制代码
username: admin password: 123456

注意:实际生产环境中,密码不应以明文传输,应使用 HTTPS 加密,并对密码进行哈希(如 BCrypt)处理后再做比对。


二、Docker 容器化部署 SpringBoot 应用

将 SpringBoot 应用打包进 Docker 镜像,可以实现环境一致性,避免"本地能跑、线上报错"的经典问题,也是现代多人协作项目中的标准化部署方式。

2.1 前置准备

在构建 Docker 镜像之前,需要先将 SpringBoot 项目打包为可执行 JAR 文件:

go 复制代码
mvn clean package -DskipTests

打包成功后,JAR 文件默认生成于 target/ 目录下,例如:

bash 复制代码
target/gs-spring-boot-0.1.0.jar

2.2 编写 Dockerfile

在项目根目录下创建 Dockerfile 文件:

bash 复制代码
# 使用带有 JDK 8 的轻量级 Alpine 基础镜像
FROM java:8u111-jdk-alpine

# 设置容器内的工作目录
WORKDIR /app

# 将打包好的 JAR 文件复制到容器的工作目录中
COPY target/gs-spring-boot-0.1.0.jar .

# 声明容器对外暴露的端口
EXPOSE 8080

# 容器启动时执行的命令
CMD ["java", "-jar", "gs-spring-boot-0.1.0.jar"]
Dockerfile 指令说明
指令 作用
FROM 指定基础镜像。java:8u111-jdk-alpine 是基于 Alpine Linux 的 JDK 8 镜像,体积小巧。
WORKDIR 设置后续指令的工作目录,若目录不存在会自动创建。
COPY 将宿主机文件复制到镜像内指定路径。
EXPOSE 声明容器运行时监听的端口(仅为文档说明,不自动映射端口)。
CMD 指定容器启动后执行的默认命令,这里启动 SpringBoot 应用。

2.3 构建 Docker 镜像

在项目根目录下(即 Dockerfile 所在目录),执行以下命令构建镜像:

复制代码
docker build . -t demo-app
  • .:指定构建上下文为当前目录。
  • -t demo-app:为镜像打上标签,命名为 demo-app

构建成功后,可通过以下命令验证镜像是否存在:

perl 复制代码
docker images | grep demo-app

2.4 运行 Docker 容器

arduino 复制代码
docker run -p 80:8080 -it demo-app
参数说明
参数 说明
-p 80:8080 端口映射,将宿主机的 80 端口映射到容器的 8080 端口。访问 http://localhost/login 即可触达应用。
-it 以交互模式运行容器,并分配伪终端,方便查看控制台日志输出。
demo-app 指定要运行的镜像名称。

启动成功后,通过浏览器或 curl 访问:

arduino 复制代码
curl -X POST http://localhost/login \
  -d "username=admin&password=123456"

2.5 完整部署流程总结

perl 复制代码
① mvn clean package          # 打包 SpringBoot 应用为 JAR
      ↓
② 编写 Dockerfile             # 定义镜像构建规则
      ↓
③ docker build . -t demo-app  # 构建镜像
      ↓
④ docker run -p 80:8080 -it demo-app  # 启动容器
      ↓
⑤ 访问 http://localhost/login  # 验证服务

三、小结

本节课通过一个简单的登录接口,完整演示了从 SpringBoot 接口开发Docker 容器化部署 的全流程:

  1. 使用 @RequestMapping + @RequestParam 快速定义 POST 接口,接收前端传参。
  2. 编写 Dockerfile,基于轻量 Alpine 镜像封装应用。
  3. 通过 docker build 构建镜像,docker run 启动服务,完成本地容器化部署。

掌握这一基础流程,是后续进行多人协作平台开发、CI/CD 流水线集成的重要基础。


系列课程:Java SpringBoot 多人协作平台实战 · 第二节

相关推荐
程序员阿黄8 分钟前
基于 Django 与 Vue 3 的智能实验室预约系统设计与实现
后端·python·mysql·django·vue·毕设
打工仔折腾 AI24 分钟前
用 Shell 脚本自动部署 mysqld_exporter 并接入 Prometheus 远程抓取
人工智能·后端·python·性能优化·ai agent 实战
毅炼24 分钟前
不写多语言 SDK,怎么让 Python、Go、Node 服务接入注册中心?
java·后端·系统架构·gateway
Methy32 分钟前
IoTHub半个月崩了五次?都是裸rethrow惹的祸
服务器·c++·后端
我不会起名字32241 分钟前
一天一道力扣Hot100(36):深度优先算法---组合总和
数据结构·c++·后端·python·算法·go
回家路上绕了弯1 小时前
AI 编程助手为什么反复读取同一份上下文?如何减少无效重复
后端
Lost of 程序猿1 小时前
用 Quartz.NET 优雅地处理 .NET 定时任务:从选型到 Docker 部署全记录
后端·c#·asp.net
名字还没想好☜1 小时前
Spring Boot 优雅停机实战:等在途请求处理完再退出,配合 K8s preStop 别丢请求
java·后端·spring
摇滚侠1 小时前
《Spring Boot 3:高级与架构设计》第 1 章 Bean 与 BeanDefinition 个人理解 2
java·spring boot·笔记·后端
IT_陈寒2 小时前
Redis主从切换竟让业务卡了3秒?这个坑我替你踩了
前端·人工智能·后端