Java项目用Docker Compose一键部署微服务集群的关键是将服务、依赖、启动逻辑固化于代码:先构建各模块可执行JAR,再为每个服务编写轻量Dockerfile,最后通过docker-compose.yml编排并用docker compose up -d统一启动。

Java 项目用 Docker Compose 一键部署微服务集群,关键不是写一堆命令,而是把服务、依赖、启动逻辑全“写进代码里”——也就是固化在 docker-compose.yml 和配套文件中。只要结构对、配置准,docker compose up -d 一条命令就能拉起整套环境。
准备好每个微服务的可运行 JAR 包
这是起点,不能跳过。Maven 构建时要确保生成的是可执行 JAR(含内嵌 Tomcat、完整依赖),且主类能被正确识别:
- 检查
pom.xml中是否启用spring-boot-maven-plugin的repackage目标 - 子模块各自独立打包,避免父 POM 的
executions配置干扰主类定位 - 构建后确认
target/xxx.jar能直接运行:java -jar target/service-a.jar
为每个服务写轻量级 Dockerfile
Dockerfile 是把 JAR 变成镜像的说明书,不用复杂,但得精准:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 基础镜像建议用
eclipse-temurin:17-jre-alpine或openjdk:17-jre-slim,兼顾安全与体积 -
COPY指向本地 JAR 文件路径,例如COPY target/service-a.jar app.jar -
EXPOSE声明服务实际监听端口(如8081),不是宿主机映射端口 - 推荐加上 JVM 容器感知参数:
-XX:+UseContainerSupport -XX:MaxRAMPercentage=75
用 docker-compose.yml 编排整个集群
这个 YAML 文件是“指挥中心”,它让 Java 服务和中间件协同工作:
立即学习“Java免费学习笔记(深入)”;
- 每个微服务定义为一个
service,用build:指向其 Dockerfile 所在目录(如./service-a) - MySQL、Redis、Nacos 等中间件直接用官方镜像,通过
image:拉取,不用自己构建 - 所有服务共用同一个自定义网络(如
backend),Java 应用里数据库地址就写mysql:3306,而不是localhost - 加
healthcheck和depends_on+condition: service_healthy控制启动顺序,避免服务因依赖未就绪而报错退出
统一启动与验证
部署动作本身极简,但验证环节不能省:
- 在
docker-compose.yml同级目录执行:docker compose up -d - 查看状态:
docker compose ps,确认所有容器状态为running - 查日志快速定位问题:
docker compose logs -f service-a - 访问任一服务的健康端点(如
http://localhost:8081/actuator/health)确认连通性

















