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,加油,代码人!

 

posted @ 2023-07-24 14:32  港城大白鲨  阅读(199)  评论(0编辑  收藏  举报