本文详细介绍了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包的大量信息,请搜索您以前的文章或再次访问下面的相关文章。期待你以后的申请!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)