详解docker部署SpringBoot及替换jar包的方法

详解docker部署SpringBoot及替换jar包的方法,第1张

详解docker部署SpringBoot及替换jar包的方法

本文详细介绍了docker部署SpringBoot和替换jar包的方式。对大家都很详细,对大家的学习、培训或者工作都有一定的参考价值,一定要朋友们参考。

关于docker的安装和应用,请看一下之前的文章。Dockerkubernetesdashboard安装和部署细节,以及Docker如何使用link在容器之间创建连接。本文详细介绍了如何在docker上部署新的springboot项目。关于如何构建一个新的springboot项目,我们可以看看在构建SpringBoot的一个新的web-mvc项目时遇到的困难上面的想法。

本文详细介绍了docker部署springboot的三种方法,即初学者入门法、jar包替换部署法和脚本制作部署法,从零实例教程一步步来。注意这三个方法的名字都是我自己的第三者。

工程项目文件目录

Dockerfile文档

创建Dockerfile文档,稍后将采用该文档。

#Dockerimageforspringbootfilerun #VERSION0.0.1 #Author:toutou #基本镜像应用java FROMjava:8 #VOLUME特定了临时性文件名称为/tmp。 #其实际效果是在服务器/var/lib/docker文件目录下建立了一个临时文件夹,并连接到容器的/tmp #VOLUME/tmp #将jar包加上到容器中并改名为app.jar ADDlearn-web-0.0.1-SNAPSHOT.jarapp.jar #运行jar包 RUNbash-c'touch/app.jar' ENTRYPOINT["java","-jar","/app.jar"] ###申明起动服务器端口 #EXPOSE8301 文档部署

在web服务器上新建一个文件夹名为/data/docker/hellolearn(文件路径可以自定义),将maven打包的jar包和上一篇文章创建的Dockerfile文档复制到web服务器新建的文件夹名(/data/docker/hellolearn)。

形成镜像

dockerbuild-thellolearn

Dockerbuild-t镜像名:标识Dockerfile的相对位置,点表示当前目录,不写标签默认设置为latest。

起动容器

名字hellolearnhellolearn

docker开始hellolearn

-d的主要参数是让容器守护进程;-name是特定容器的名称;-p是端口映射。此时网络服务器中的8301(灶具前端口号)映射到容器(application.properties配备8301)中的8301(灶具后端口号)。

浏览WEB

jar包投射部署

按照上面的流程,就足以轻松解决docker部署springboot的整个步骤。但是容器启动后,每次需要升级jar包的时候,都要重新制作镜像,然后重新制作容器。步骤复杂,效率极低。那么如何在不升级映像或容器的情况下,立即升级jar包进行部署呢?

5.1更新Dockerfile

#Dockerimageforspringbootfilerun #VERSION0.0.1 #Author:toutou #基本镜像应用java FROMjava:8 EXPOSE8301 ENTRYPOINT["java","-jar","/data/learn-web-0.0.1-SNAPSHOT.jar"]

entrypoint的最后一行["Java"、"-jar"、"/data/learn-web-0.0.1-SNAPSHOT.jar"]将运行容器中/data文件目录下的learn-web-0.0.1-snapshot.jar文件。

5.2应用docker构建命令来构建镜像

dockerbuild-thellolearn

5.3建立和启动容器

dockerrun-namehellolearn-it-v/data/docker/newhellolearn/package:/data-d-p8301:8301hellolearn

-v主机文件目录关系容器文件目录。这样,主机的/data/docker/newhellolearn/package文件目录将与docker的/data文件目录一起投影。

在这种情况下,当jar包发生变化时,可以立即升级主机的/data/docker/newhellolearn/package文件目录中的jar包。升级jar包后,必须重新启动容器。

脚本制作部署

根据jar包部署方法,有一个问题。如果jar包名改变,比如版本信息改变(learn-web-0.0.1-snapshot.jar->:>;learn-web-1.0.1-SNAPSHOT.jar).必须做些什么?下面详细描述根据脚本进行部署的第三种方法。

6.1建立hellolearn.sh文件

Java-jar/data/learn-web-0.0.1-snapshot.jar

将hellolearn.sh上传到/data/docker/hellolearn/scriptdeploy/package中。可以自定义此文件夹名称路径。记住这个文件夹名路径,以后会继续使用。

6.2增加脚本制作,实现管理权限。

chmodxhellolearn.sh

6.3建立文档档案

#Dockerimageforspringbootfilerun #VERSION0.0.1 #Author:toutou #基本镜像应用java FROMjava:8 EXPOSE8301 CMD["sh","-c","/data/hellolearn.sh"]

Cmd["sh","-c","/data/hellolearn.sh"]表示容器启动6.1中建立的hellolearn.sh脚本。

注意最后一条指令的原文充满了ENTRYPOINT,在脚本制作和部署中改成了CMD。我有兴趣知道ENTRYPOINT和CMD之间的实际区别。

6.4提交jar包

将jar包放入hellolearn.sh的同一个文件夹名文件目录,即/data/docker/hellolearn/scriptdeploy/package,然后在构建容器时用容器的/data文件目录投影文件目录(主机文件目录)。。

6.5文件名框架图

这里的文件目录结构不清晰,大家晕。请提交一份我的主机的文件目录框架图,一目了然。

6.6建立镜像

docker构建-thellolearn-script。

末尾的点表示当前目录,所以形成镜像的指令必须在Dockerfile所属的文件目录中执行。

6.7建立和启动容器

dockerrun-namehellolearn-script-it-v/data/docker/hellolearn/scriptdeploy/package:/data-d-p8302:8301hellolearn-script

docker开始hellolearn-script

将主机的/data/docker/hellolearn/scriptdeploy/package文件目录投影到容器的/data文件目录。在这种情况下,当jar包发生变化时,您可以立即升级主机文件目录中的jar包。即使jar包名称发生了变化,也必须再次升级hellolearn.sh脚本。升级后重新启动容器。

6.8网页检测的实际效果

查询docker日志

docker日志[选项]容器ID

选项表明:

-f:跟踪日志输出
-自:某个信息开始时间的所有日志
-t:信息显示的时间格式
-tail:只列出新的n个容器日志。

7.1特定时间后查询日志,只会显示最后100行信息:

dockerlogs-f-t-since="2020-10-01"-tail=100集装箱ID

7.2检查特定时间段的日志。

dockerlogs-t-since="2020-10-01t19:00:00"-until"2020-10-01t19:00:00"集装箱ID

7.3查询特定时间后的日志:

dockerlogs-t-since="2020-10-01t19:00:00"集装箱ID

7.4查询最近五分钟的日志:

码头日志-自5m集装箱ID

7.5根据exec指令攻击特定的容器:

dockerexechellolearn-it/bin/bash或dockerexec-ithellolearnbash

7.6查询码头工人IP

dockerinspect-format='{{.networksettings.IPaddress}}'hellolearn

碰到的难题

解释:来自守护程序的错误响应:驱动程序在端点flame_leavitt上对外部连接编程失败(iptablesfailed:iptables-wait-tnat-ADOCKER-pTCP-d0/0-dport8301-jDNAT-to-destination172.17.0.2:8301!-idocker0:iptables:没有该名称的链/目标/匹配。

解决方法:重新启动docker。systemctl重新启动docker

实际问题基本信息详细信息来自守护程序的错误响应:驱动程序无法在端点MySQL3308(

详细源代码地址

https://github.com/toutouge/javademosecond/tree/master/hellolearn

到目前为止,这篇关于docker如何部署SpringBoot并替换jar包的文章已经在这里详细介绍过了。有关docker部署SpringBoot和替换jar包的大量信息,请搜索您以前的文章或再次访问下面的相关文章。期待你以后的申请!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/774057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存