栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Docker部署SpringBoot服务的三种方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker部署SpringBoot服务的三种方法

总结一下spring boot开发的jar在doker下部署的几种不同的方式

一、文件部署 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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号