docker部署spring boot微服务只需四步:打包可执行jar、选轻量java镜像、写dockerfile、构建运行容器;关键在镜像轻量、端口明确、配置外置。

在 Docker 中部署 Spring Boot 微服务,核心就四步:打包成可执行 JAR、准备基础镜像、编写 Dockerfile、构建并运行容器。整个过程不依赖复杂工具链,也不必手动配置 Linux 环境,关键在于保持镜像轻量、端口明确、配置外置。
打包 Spring Boot 应用为可执行 JAR
确保项目使用 spring-boot-maven-plugin 插件,它会把所有依赖打到一个 fat jar 里:
- 在
pom.xml的<build><plugins></plugins></build>中确认已声明该插件 - 执行
mvn clean package,生成的 JAR 位于target/xxx.jar - 本地验证:运行
java -jar target/xxx.jar,能正常访问接口(如/actuator/health或自定义 REST 端点)即说明可执行性无误
选择合适的基础 Java 镜像
别直接用 java:8 或 openjdk:17-jdk-slim 这类大而全的镜像,推荐用更轻量、安全更新及时的版本:
- 首选
eclipse-temurin:17-jre-jammy(官方 LTS,体积小、无冗余工具) - 避免使用
java:8—— 已停止维护,存在已知漏洞 - 若需调试,可临时换用
-jdk版本;生产环境一律用-jre
编写简洁可靠的 Dockerfile
Dockerfile 是构建镜像的唯一蓝图,必须清晰表达运行逻辑:
- 以
FROM eclipse-temurin:17-jre-jammy开头 - 用
COPY target/*.jar app.jar复制 JAR(文件名统一,便于 CMD 调用) - 设置工作目录:
WORKDIR /app - 暴露端口:
EXPOSE 8080(与application.yml中的server.port一致) - 启动命令:
CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"](加-D参数防启动卡顿)
构建、运行与验证容器
完成上述步骤后,终端执行即可完成部署:
- 构建镜像:
docker build -t my-springboot-service . - 运行容器:
docker run -d --name svc-01 -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=prod" my-springboot-service(-e可注入 profile 或数据库地址等变量) - 查看日志:
docker logs -f svc-01,确认 Spring Boot 启动成功、无 ClassNotFoundException 或 Connection refused - 验证服务:
curl http://localhost:8080/actuator/health返回{"status":"UP"}即表示健康上线
后续扩展时,可配合 docker-compose.yml 编排多个微服务,或接入 Kubernetes 做滚动更新和自动扩缩容。但单体部署阶段,以上四步已完全覆盖实际需求。











