直接用官方openjdk镜像最省事,如openjdk:17-jre-slim,预装jre、配置好环境变量,开箱即用;dockerfile仅需5–6行,含from、copy、entrypoint等指令,构建运行只需docker build和docker run两步。

直接用官方基础镜像最省事,不需要自己装 JDK、配环境变量,也不用上传 jdk 压缩包或写复杂初始化脚本。
选对基础镜像,一步到位
Spring Boot 项目本质是运行一个 fat jar,只要容器里有匹配的 Java 运行时即可。Docker Hub 上有大量维护良好的 OpenJDK 官方镜像,比如:
- openjdk:8-jre-slim(轻量,适合 Spring Boot 2.x 及老项目)
- openjdk:17-jre-slim(推荐,兼容 Spring Boot 2.7+ 和 3.x)
- openjdk:21-jre-slim(最新 LTS,适合新项目)
这些镜像已预装 JRE、配置好 PATH 和 JAVA_HOME,开箱即用,比基于 centos 自建 JDK 镜像更安全、更小、更新及时。
Dockerfile 写法简洁明确
在项目根目录放一个 Dockerfile,内容通常只需 5–6 行:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
FROM openjdk:17-jre-slim
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
说明:
-
VOLUME /tmp避免 Tomcat 临时文件写入层,提升性能和可重复性 -
ARG JAR_FILE支持构建时传参,适配不同打包路径 -
ENTRYPOINT固定启动命令,比 CMD 更可靠(CMD 容易被docker run参数覆盖)
构建与运行只需两步
确保项目已用 Maven 打包出 jar(mvn clean package):
-
构建镜像:
docker build -t my-springboot-app . -
运行容器:
docker run -d -p 8080:8080 --name app my-springboot-app
其中 -p 8080:8080 将宿主机 8080 映射到容器内应用端口(需确保 application.properties 中 server.port=8080 或保持默认)。
进阶建议:避免常见坑
实际部署中要注意几个关键点:
-
别硬编码端口:Spring Boot 默认用 8080,但可通过
--server.port=9000或环境变量SERVER_PORT覆盖,便于多实例共存 -
日志输出到 stdout:确保
logging.file.name未启用,让日志直接打印到控制台,方便docker logs查看 -
内存限制要合理:Spring Boot 应用默认堆内存可能过大,可用 JVM 参数控制,例如:
ENTRYPOINT ["java","-Xmx256m","-Xms128m","-jar","/app.jar"]
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










