Spring Boot集成Docker部署教程
前言
Docker有时候确实易用,但Spring Boot官方好像并不推荐这种方式,按照个人理解 应该是Spring Boot已经做了一个很优秀的集成,对于Docker这种容器化让开发人员不能专注于开发...
附文为Spring Boot官方教程:
https://spring.io/guides/topicals/spring-boot-docker/ 有时候不一定可以访问
https://spring.io/guides/gs/spring-boot-docker
正文
环境是JDK11,Maven环境
编写DockerFile
FROM eclipse-temurin:11-jdk-alpine VOLUME /appCOPY target/*.jar /app/app.jar
#定义时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java","-jar","/app/app.jar"]
有的地方推荐使用openJDK这个镜像,但其实官方已经停止更新了
执行build
build前要记得先编译下自己的java代码
docker build -t hengrui/myapp .
启动容器
#我这里开发的时候使用是8083端口 docker run -p 8083:8083 hengrui/myapp
#或者映射本地的volume
docker run -p 8081:8081 --name backupitems(容器的名称) -v D:\temp2:/app -d hengrui/backupitems(镜像的名称)
#或者映射本地的volume-linux
docker run -p 8081:8081 --name backupitems -v /opt/tomcat/logs:/app/logs -d hengrui/backupitems(镜像的名称)
#传递profile使用哪个文件,原则上是环境变量的优先 使用 -e参数
docker run -p 8081:8081 --name backupitems -v /opt/tomcat/logs:/app/logs -e spring.profiles.active="pro" -d hengrui/backupitems(镜像的名称)
浏览器效果
时区问题(如果打包的时候没设置,建议dockerfile里配置好)
Docker里的时区可能是UTC标准时间,可以参考以下修改时区
进入容器 docker exec -it 容器ID /bin/bash 修改本地时区 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo "Asia/Shanghai" > /etc/timezone 重启容器 docker restart 容器ID
查看镜像运行信息
docker inspect 镜像ID
总结
我的理解是官方不太推荐容器化部署,IT技术发展的太快,对于普通应用开发人员,已经无法专注于代码开发,还要了解部署,如果是容器化部署,还要学习CI/CD,加油,代码人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南