将Spring Boot应用快速部署到生产环境,并实时掌握其运行状态,实际上只需四步:容器化打包、独立运行MySQL、接入Prometheus指标采集、启动Grafana可视化看板。将这四步串联起来,就构成了一个完整的监控闭环。下面直接上干货,按顺序逐步操作。

构建可运行的Spring Boot Docker镜像
在项目根目录下,先用Maven进行打包,生成jar包——确保target目录下存在类似springboot-app-0.0.1-SNAPSHOT.jar的文件。然后创建Dockerfile,内容仅需以下几行:
FROM openjdk:17-jre-slim
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
操作非常简便,直接把文件拖入即可。但需要注意一个小细节:COPY指令中的target/路径不可遗漏,否则构建时会提示“no such file”错误。接着执行构建命令:
docker build -t springboot-app .
命令末尾的【.】一定不能省略——它表示构建上下文是当前目录,少了它COPY指令会执行失败。
启动MySQL容器并配置连接
首先启动一个MySQL容器,指定root密码、端口映射以及数据卷持久化:
docker run -d --name mysql8 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -v /opt/mysql-data:/var/lib/mysql mysql:8.0
温馨提示:宿主机上的/opt/mysql-data目录需要提前创建,并确保拥有写权限,否则容器启动后因挂载卷失败会直接退出。
然后修改Spring Boot项目中的application.properties,将数据库URL指向容器服务名:
spring.datasource.url=jdbc:mysql://mysql8:3306/mydb?useUnicode=true&characterEncoding=utf-8
这里必须使用mysql8(即容器名),不能使用localhost或127.0.0.1——因为Docker默认的bridge网络中,容器之间通信依赖服务名解析,而非IP地址。
启用Actuator暴露Prometheus指标
有两种方式可供选择。第一种方式是在pom.xml中添加两个依赖:
org.springframework.boot
spring-boot-starter-actuator
io.micrometer
micrometer-registry-prometheus
第二种方式是在application.properties中直接启用端点:
management.endpoints.web.exposure.include=health,info,prometheus,metrics
management.endpoint.prometheus.show-details=true
启动应用后,访问https://localhost:8080/actuator/prometheus,如果看到大量以# TYPE开头的文本,说明指标已成功暴露。
部署Prometheus与Grafana并完成对接
第一步:创建prometheus.yml配置文件,定义抓取目标:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'springboot'
static_configs:
- targets: ['host.docker.internal:8080']
第二步:启动Prometheus容器,并挂载配置文件:
docker run -d --name prometheus -p 9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
第三步:启动Grafana容器:
docker run -d --name grafana -p 3000:3000 grafana/grafana-enterprise
第四步:在浏览器中访问https://localhost:3000,使用默认账号admin/admin登录,并立即修改密码。
第五步:在Grafana中添加Prometheus数据源,URL填写https://host.docker.internal:9090,点击【Save & Test】确认连通性。
第六步:导入Spring Boot监控模板,模板ID输入10280,加载后即可看到JVM内存、HTTP请求延迟、线程数等核心指标。
