去评论
海欣资源

Docker部署SpringBoot服务教程

xx5678
2022/05/04 15:42:57
一、文件部署
1、创建Dockerfile文件
# Docker image for springboot file run
# VERSION 0.0.1
# Author: Mr.Liu
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER Mr.Liu
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD blog-0.0.1-SNAPSHOT.jar blog.jar
# 运行jar包
RUN bash -c 'touch /blog.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/blog.jar"]

2、文件部署
在服务器创建文件夹/docker/blog,将maven打包好的jar包和上文创建的Dockerfile文件复制到服务器新建的文件夹中。


3、生成镜像(命令行结尾带一个 “.” )
docker build -t blog4docker .
4、启动容器
docker run -d --name blog -p 30317:8080 blog4docker
-d参数是让容器后台运行;
–name为指定容器的名称;
-p 是做端口映射,此时将服务器中的30317(冒号前的端口)端口映射到容器中的8080(冒号后的端口)端口(application.yml配置的是8080)
5、访问
到这里最简单的部署就完成了,浏览器可以直接访问了。
http://ip:30317/

二、Jar包映射部署
按照上文的步骤已足可以轻松应对docker部署springboot的全流程。但是这样在启动容器后,每次需更新jar包时,都得重新制作镜像,再重新制作容器。流程及其繁琐,效率极低。
以下步骤是在不更新镜像和容器的前提下,直接更新jar完成项目更新的操作。
1、修改Dockerfile文件
# Docker image for springboot file run
# VERSION 0.0.1
# Author: Mr.Liu
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER Mr.Liu
ENTRYPOINT ["java","-jar","/data/blog.jar"]
#最后一行 ENTRYPOINT ["java","-jar","/data/blog.jar"] 会运行容器里/data目录下的blog.jar文件。

2、重新构建镜像(命令行结尾带一个 “.” )
docker build -t blog4docker .
3、创建并启动容器
docker run --name blog -it -v /docker/blog:/data -d -p 30317:8080 blog4docker
-v 宿主机目录关联容器目录。这样宿主机的/data/docker/newhellolearn/package目录就与docker的/data目录进行映射。
这样的话,当jar包发生变动时,直接更新宿主机的/data/docker/newhellolearn/package目录下的jar包即可,更新jar包之后需要将容器重启一下

三、脚本部署
通过jar包部署方式引起一个问题,若jar包名字发生变化,比如版本号变化(blog-0.0.1-SNAPSHOT.jar–>>blog-1.0.1-SNAPSHOT.jar)。需要怎么处理呢?下面就介绍第三种通过脚本部署的方式。
1、创建start.sh文件
java -jar /data/blog-0.0.1-SNAPSHOT.jar > /data/logs/console.out
这里的/data和/data/logs是容器中的文件路径
2、添加脚本执行权限
chmod +x start.sh
3、创建Dockerfile
# Docker image for springboot file run
# VERSION 0.0.1
# Author: Mr.Liu
# 基础镜像使用java
FROM java:8
CMD ["sh","-c","/data/start.sh"]
#CMD ["sh","-c","/data/hellolearn.sh"] 表示在容器启动时启动上面创建的start.sh脚本。
#注意最后一条命令上文中都是ENTRYPOINT,在脚本部署中改成了CMD
4、上传jar包
把打包的jar包上传的/docker/blog中,和start.sh放在同一个目录下,并创建logs文件夹,用于存放项目日志,目录结构如下:


5、创建镜像(命令行结尾带一个 “.” )
docker build -t blog4docker .
6、启动容器
docker run --name blog -it -v /docker/blog:/data -d -p 30317:8080 blog4docker