应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Springbootdockerjenkins持续集成实战操

  1操作步骤1。1docker安装
  在虚拟机(vitualBox)下执行yum命令:
  〔rootcentosvagrant〕yuminstalldocker
  安装完成后,使用下面的命令来启动docker服务,并将其设置为开机启动:
  〔rootcentosvagrant〕servicedockerstart
  查看镜像:
  〔rootcentosvagrant〕dockerimages
  安装问题:
  在执行yuminstalldocker命令是安装不成功的问题:
  清除一下缓存:
  〔rootcentosvagrant〕yumcleanall
  〔rootcentosvagrant〕yummakecache
  再执行安装命令:
  〔rootcentosvagrant〕yuminstalldocker
  1。2配置springboot
  pom。xml配置:
  lt;?xmlversion1。0encodingUTF8?
  projectxmlnshttp:maven。apache。orgPOM4。0。0
  xmlns:xsihttp:www。w3。org2001XMLSchemainstance
  xsi:schemaLocationhttp:maven。apache。orgPOM4。0。0http:maven。apache。orgxsdmaven4。0。0。xsd
  modelVersion4。0。0spanmodelVersion
  groupIdorg。zz。springbootspangroupId
  artifactIdspringbootdemospanartifactId
  versionlatestspanversion
  parent
  groupIdorg。springframework。bootspangroupId
  artifactIdspringbootstarterparentspanartifactId
  version1。5。2。RELEASEspanversion
  spanparent
  dependencies
  dependency
  groupIdorg。springframework。bootspangroupId
  artifactIdspringbootstarterwebspanartifactId
  spandependency
  dependency
  groupIdorg。springframework。bootspangroupId
  artifactIdspringbootstartertestspanartifactId
  scopetestspanscope
  spandependency
  spandependencies
  properties
  project。build。sourceEncodingUTF8spanproject。build。sourceEncoding
  docker。image。prefixdemospandocker。image。prefix
  spring。boot。version1。3。3。RELEASEspanspring。boot。version
  spanproperties
  build
  plugins
  plugin
  groupIdorg。springframework。bootspangroupId
  artifactIdspringbootmavenpluginspanartifactId
  spanplugin
  plugin
  groupIdcom。spotifyspangroupId
  artifactIddockermavenpluginspanartifactId
  version0。4。3spanversion
  configuration
  imageName{docker。image。prefix}{project。artifactId}spanimageName
  dockerDirectorysrcmaindockerspandockerDirectory
  resources
  resource
  targetPathspantargetPath
  directory{project。build。directory}spandirectory
  include{project。build。finalName}。jarspaninclude
  spanresource
  spanresources
  spanconfiguration
  spanplugin
  spanplugins
  spanbuild
  spanproject
  详见附录:pom。xml文件
  创建dockerfile文件:
  项目中创建srcmaindockerDockerfile文件,如下:
  配置dockerflie(用于生成镜像):
  FROMfrolvladalpineoraclejdk8:slim
  VOLUMEtmp
  ADDdemo1。0。jarapp。jar
  RUNshctouchapp。jar
  ENVJAVAOPTS
  ENTRYPOINT〔sh,c,javaJAVAOPTSDjava。security。egdfile:dev。urandomjarapp。jar〕
  解释下这个配置文件:
  VOLUME指定了临时文件目录为tmp。其效果是在主机varlibdocker目录下创建了一个临时文件,并链接到容器的tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。tmp目录用来持久化到Docker数据文件夹,因为SpringBoot使用的内嵌Tomcat容器默认使用tmp作为工作目录
  项目的jar文件作为app。jar添加到容器的
  ENTRYPOINT执行项目app。jar。为了缩短Tomcat启动时间,添加一个系统属性指向devurandom作为EntropySource
  见附录Dockerfile文件
  编写SpringBoot应用:
  packagecom。test。demo;
  importorg。springframework。boot。SpringApplication;
  importorg。springframework。boot。autoconfigure。SpringBootApplication;
  importorg。springframework。web。bind。annotation。RequestMapping;
  importorg。springframework。web。bind。annotation。RestController;
  主应用入口
  authorwaylau。com
  date2016年3月19日
  SpringBootApplication
  RestController
  publicclassApplication{
  RequestMapping()
  publicStringhome(){
  returnHelloDockerWorld。
  Welcometowaylau。comli;
  }
  publicstaticvoidmain(String〔〕args){
  SpringApplication。run(Application。class,args);
  }
  }
  代码类见附件Application。java1。3构建DockerImage1。3。1虚拟机(vitualBox)挂载本地项目路径
  启动虚机:
  然后登录虚机:
  〔rootcentosvagrant〕sshp2222root127。0。0。1
  修改seetting文件:
  〔rootcentosvagrant〕cdoptapachemaven3。5。0conf
  修改地址:mediasfrepository
  1。3。2生成镜像(mvnpackagedocker:build)
  重启虚机
  输入命令:
  〔rootcentosvagrant〕df
  进入到:
  cdmediasfwlwciticworkspacetaskschedulerlose目录(也就是项目的目录):
  执行命令:
  〔rootcentosvagrant〕mvnpackagedocker:build
  需要注意:
  在执行mvnpackagedocker:build,先输入命令dockerimages如果提示如下图,请先启动docker,启动命令:systemctlstartdocker,再执行mvnpackagedocker:build命令,不然构建镜像会失败。
  执行后构建成为docker镜像
  输入命令:
  〔rootcentosvagrant〕dockerimages
  可以看到demodemo就是生成的镜像1。3。3启动项目
  运行DockerImage(启动项目):
  输入命令
  〔rootcentosvagrant〕dockerrunp8080:8080tdemodemo
  这里指定端口为8080
  运行成功:
  浏览器访问:
  输入http:localhost:8080
  发现访问不了,原因没有做端口映射,如下:
  在虚机(vitualBox)里配置:
  这个时候再输入http:localhost:8080就可以访问了
  1。4杀掉已启动的镜像
  先查看进程,杀掉已启动的进程:
  〔rootcentosvagrant〕dockerps
  然后输入命令:
  〔rootcentosvagrant〕dockerkillsKILLbfbf6bcd0eb6
  删除镜像:
  先查询记录:
  〔rootcentosvagrant〕dockerpsa
  可以看到有4个线程在启动,我们杀掉他们:
  〔rootcentosvagrant〕dockerrmb427a2d85040f91a2e1d0f860297d2ecbff3bc5ca853a648
  再查看:
  线程都清掉了:
  此刻执行:
  〔rootcentosvagrant〕dockerimages
  1。5Docker清除所有多余的docker镜像释放空间
  执行:
  〔rootiz2ze215l4uqqv8jiei1aaz〕dockersystempruneaf
  再执行,多余的都清除了
  〔rootiz2ze215l4uqqv8jiei1aaz〕dockerimages
  1。6本地虚机doc打包成tar上传至134服务器
  打包镜像:
  〔rootcentosvagrant〕dockersaveohomehub。dashboardengine。tarhub。dashboardenginehub。dashboardengine:latest
  本地打包成tar文件,通过ftp传输到134服务器上
  输入下列命令恢复镜像,自动加载到docker容器:
  〔rootcentosvagrant〕dockerloadihomehub。dashboardengine。tar
  查看镜像:
  〔rootcentosvagrant〕dockerimages
  启动项目:
  〔rootcentosvagrant〕dockerrundp9090:9090thub。dashboardenginehub。dashboardengine
  注意:d表示后台启动
  输入地址访问:
  http:10。247。32。134:9090iotgetMsgCount
  1。7docker推送镜像至私服
  把一个镜像push到私有仓库中
  查看一下镜像
  〔rootcentosvagrant〕dockerimages
  以demodemo这个镜像为例。
  接下来修改一下该镜像的tag,输入下面命令:
  〔rootcentosvagrant〕dockertagdemodemoregistry。user。pcloud。citic。comzxywclouddemodemo:tag
  发现tag被修改了,接下来执行推送命令:
  〔rootcentosvagrant〕dockerpushregistry。user。pcloud。citic。comzxywclouddemodemo:tag
  Gethttps:registry。user。pcloud。citic。comv1ping:dialtcp10。247。20。205:443:iotimeout
  这时会发现推送超时了,此时需要修改docker的配置文件,解决办法如下:
  〔rootcentosvagrant〕touchetcdockerdaemon。json
  〔rootcentosvagrant〕vietcdockerdaemon。json
  加入本地registry的地址,如:
  {insecureregistries:〔registry。user。pcloud。citic。com〕}
  需要注意:
  registry。user。pcloud。citic。com为私服地址,这里我直接加在liverestore:true的后面,然后加了一个逗号隔开。
  添加主机host:
  vietcresolv。conf
  nameserver10。247。64。29
  nameserver10。247。64。28
  vietchosts
  10。247。20。205registry。user。pcloud。citic。com
  然后重启docker服务:
  〔rootcentosvagrant〕systemctlrestartdocker。service
  执行推送命令:
  〔rootcentosvagrant〕dockerpushregistry。user。pcloud。citic。comzxywclouddemodemo:tag
  3f5ead2a3e3b:Pushed
  decb4e431a22:Pushed
  aea4c1b2c226:Pushed
  dcf909146faa:Pushed
  23b9c7b43573:Pushed
  tag:digest:sha256:a62b8f4cf6f446b81c5cb398499ef11e34bfe491a417e2959e2d05086768005esize:1375
  推送成功,1。7。1下载私服镜像
  下载私服镜像:
  〔rootcentosvagrant〕dockerpullregistry。user。pcloud。citic。comzxywclouddemodemo:tag
  下载成功,查看一下镜像
  〔rootcentosvagrant〕dockerimages
  启动:
  〔rootcentosvagrant〕dockerrunp8081:8081tregistry。user。pcloud。citic。comzxywclouddemodemo:tag
  1。8dockercompose插件安装
  输入下面命令安装插件:
  〔rootcentosvagrant〕curlLhttps:github。comdockercomposereleasesdownload1。12。0dockercomposeunamesunamemusrlocalbindockercompose
  安装完成后,执行运行权限:
  〔rootcentosvagrant〕sudochmodxusrlocalbindockercompose
  查看版本:
  〔rootcentosvagrant〕dockercomposeversion
  可以看到为当前为1。12。0版本,则安装成功。
  1。8。1创建test。yml文件
  把test。yml文件放入homevagrantcomposetest目录下:
  复制下面内容到test。yml文件里:
  srvmgtapp:
  image:demodemo
  hostname:service
  volumes:
  tmp
  ports:
  9090:9090
  environment:
  jdbc。driverClassName:com。mysql。jdbc。Driver
  jdbc。username:mysql
  jdbc。password:mysql123
  jdbc。url:jdbc:jdbc:mysql:10。247。33。42:3306iot
  restart:always
  1。8。2启动dockercompose
  〔rootcentosvagrant〕dockercomposeup
  需要注意:
  启动dockercompose,需要在yml文件存在的当前目录下执行,例如:我yml文件在homevagrantcomposetest这个目录
  ps查看:
  〔rootcentosvagrant〕dockerps:
  CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
  f66814e2b624demodemoshcjavaJAVAOP15minutesagoUp15minutes0。0。0。0:90909090tcpcomposetestsrvmgtapp1
  浏览器访问:
  http:localhost:9090test
  1。9jenkins持续集成1。9。1jenkins安装
  本文直接使用war包安装
  下载地址:https:jenkinsci。orgcontentthankyoudownloadingwindowsinstaller
  war包有两种安装方法
  方法一
  下载jenkins。war,拷贝到D:JavaTooljenkins()下,然后运行javajarjenkins。war。(注意需要先安装JDK,然后设置JAVAHOME环境变量且将JAVAHOMEbin加入到PATH环境变量中)
  运行如下:
  访问http:localhost:8080,jenkins的主界面如下:
  方法二
  把Jenkins1。409。1版解压,把得到的war包直接扔到tomcat下,启动tomcat,Jenkins就安装完毕,访问http:localhost:8080jenkins
  这里采用方法二方式,直接放tomcat里启动。
  1。9。2构建maven项目
  构建maven项目前,把相关的插件安装上,如:
  增加需要用到的插件:DeploytocontainerPlugin、GITplugin、MavenIntegrationplugin、PublishOverSSH、SSHSlavesplugin、SubversionPlugin,请用以下示范方法添加安装需要的插件
  调整相关系统设置项,请自行找出列出的设置项并填写相关内容
  jdk配置:
  配置好点击save保存。1。9。3配置远程服务器
  配置远程服务器,上传镜像1。9。4新建maven项目集成至远程服务器
  配置git路径,从git的master下直接检出:
  执行本地脚本:
  deploy。sh文件在项目的根目录下,deploy。sh文件见附件2,如下图:
  配置远程上传脚本命令:
  hub。admin。engine。yml文件与Dockerfile文件见附件2,目录都在项目的根目录:
  保存后:
  点击项目:
  点击立即构建,持续集成就开始了
  这里构建成功:
  注意
  构建的项目地址在:
  〔rootcentosvagrant〕cd。jenkinsworkspace
  或者输入:
  〔rootcentosvagrant〕cdroot。jenkinsworkspace
  可以看到构建的所有项目,如下:
  登录服务dockerimags查看镜像命令可以看到刚刚上传的镜像:
  dockerps命令可以看到项目也启动了:
  浏览器访问:
  http:10。247。32。134:8093iotchannelManagergetChannelPageList
  1。9。5Jenkins部署docker报错问题
  错误如下:
  errorpullingimageconfiguration:Gethttp:registry。osscnbeijingzxd01a。pcloud。citic。comdockerregistryv2blobssha2564646df8683ac8fea45852a4b218a1c611b08fb1195bafa790fe9e2eec8b2867662data?Expires1499156631OSSAccessKeyIdvIvJI9Xwy0M87Qb8SignatureqaQOMawAE1a7jbQ2P9N2ahIyDVw3D:dialtcp:lookupregistry。osscnbeijingzxd01a。pcloud。citic。comon100。100。2。136:53:nosuchhost
  找不到主机映射问题:nosuchhost
  解决办法:
  vietcresolv。conf
  添加相关的ip地址
  1。9。6Jenkins配置部署发送邮件通知
  步骤1:
  步骤2:JenkinsLocation下:
  步骤3:ExtendedEmailNotification下:
  步骤4:
  步骤5:jenkins点击部署的项目,如下:
  点击配置:
  选择:下拉选择:
  在ProjectRecipientList里加入邮箱即可,多个用逗号隔开,如1126。com,2126。com
  步骤6:最后点开:
  选择:
  保存就可以了。1。9。7虚拟机(virtualBox)登录jenkins
  先安装vagrant:
  进入到varant的目录:
  C:Usersuisftechvagrant
  启动:
  vagrantup
  登录:
  sshp2222root127。0。0。1
  默认密码:vagrant
  修改C:UsersuisftechvagrantVagrantfile文件:
  config。ssh。usernamevagrant
  config。ssh。passwordvagrant
  vb。namecentos。base
  登录成功后:
  启动tomcat并且启动jenkins:
  注意:将jenkins。war包放到tomcat的webapps下:
  启动完需在virtualBox配置端口映射:
  这里做了端口映射才能正常访问,登录jenkins:
  http:127。0。0。1:8080jenkins
  如此登录成功1。10Jenkins持续集成至阿里云服务1。10。1新建项目
  配置好git路径:
  执行脚本:
  注意:
  dashboardengine。sh脚本放在项目的根目录,dashboardengine。yml也是在同目录下,如下图:
  脚本详细见附录31。10。2集成至阿里云注意问题
  集成之前需先在阿里云服务里建立appname,如:
  appnamehubdashboardengineapp
  需要先将hubdashboardengineapp添加阿里云服务后端,再做集成。1。11Linux定时任务1。11。1Linux定时清理过时的docker镜像
  1。键入crontabe编辑crontab服务文件,如下:
  3023binshhomeuserschedulercleardockerimg。sh每晚的11:30
  注意:没有安装crontab键入yuminstallcrontabs安装。
  2。查看该用户下的crontab服务是否创建成功,用crontabl命令
  3。启动crontab服务
  一般启动服务用sbinservicecrondstart若是根用户的cron服务可以用sudoservicecrondstart,这里还是要注意下不同版本Linux系统启动的服务的命令也不同,像我的虚拟机里只需用sudoservicecronrestart即可,若是在根用下直接键入servicecronstart就能启动服务
  这里本地启动是:binsystemctlstartcrond。service
  这里本地停止是:binsystemctlstopcrond。service
  4。查看服务是否已经运行用psaxgrepcron
  5。删除任务调度工作
  crontabr删除所有任务调度工作
  6。删除docker镜像shell脚本:
  !binsh
  dockerrmi(dockerimagesgrepdev)

炸萝卜丸子有诀窍,不加面粉和淀粉,老奶奶教我一招,香脆不发硬炸萝卜丸子有诀窍,不加面粉和淀粉,老奶奶教我一招,香脆不发硬鲜香可口,外酥里嫩的炸丸子,谁人不爱呢?每到了秋冬季节,天冷的时候,街上卖炸丸子的小摊就多了起来,有炸肉丸子、……立夏养阳的大好时机,这5个养脾的小秘诀,每个人都应该知道今天24节气中的立夏,俗话说:春夏养阳,秋冬养阴。夏天,正是养脾健体的大好时机。阳气可以温养全身组织,能维护脏腑的效果,阳气能让人身体强壮、精神饱满,如果,阳气虚少生理机……仇亲期的孩子有三种表现,第一种藏得较深,也是最需要防备的其实很多人在养育孩子的时候,都会把更多的精力放在孩子的饮食作息上,甚至是在乎孩子的成长特点。并不是说这样的做法是不正确的,但是越是这样做的话,就越是容易忽略掉仇亲期,这对于孩子……A股放量杀跌,外资大幅流出,发生了什么?美联储释放鸽派言论,12月份加息减缓,在这个预期下,美股集体上涨,美元指数也大幅调整,大宗商品也集体反弹,相信在开盘前大家一致都预期A股会高开。而且周末政策还释放了利好,……孙艺珍怀孕后首亮相!穿无袖连衣裙肚子不大麒麟臂没眼看,太壮了很多女孩子都比较喜欢穿连衣裙,尤其是夏季,各种风格的连衣裙登上时尚舞台,碎花裙连衣裙半身裙亦或是纱裙,除了碎花裙受欢迎外,缎面材质的连衣裙也是必备单品,很是受欢迎,尤其是走优雅……减少1。59毫秒,地球创下有记录以来最短的一天2021年7月17日,参观者在上海天文馆大厅内观看证明地球自转的装置。新华社发据英国《每日邮报》网站8月1日报道,地球创下有记录以来最短的一天。报道称,通常情况下,……突发!俄罗斯制裁拜登妻子和女儿原标题:深夜利好!增量资金来了;突发!俄罗斯制裁拜登妻子和女儿;重磅!知名大厂被罚1亿美元;惊呆!这国宣布加息12000个基点公司6月28日,华为官方正式宣布,将于……一段剧情,一段佳话,谁能荡气回肠,唯我东宫女孩彭小苒《君九龄》这个电视剧,这是个大女子戏。类似于《楚乔传》,主要演女一号,男一号只是配角。不得不说这个剧情有点那个啥,不知道看过这个电视剧的朋友是什么想法。女一号在第一集就脸……昔日国乒六朵金花合影,没有孙颖莎的身影,王曼昱裙装显气质曾几何时,国乒队有这样六朵金花,她们分别是武杨、丁宁、刘诗雯、陈梦、朱雨玲以及王曼昱,这六朵金花,王曼昱年龄是最小的,但因为出色的实力,能够与其余五位金花一起,成为当时国乒女队……羊了个羊,怎么就火出了圈?今天除了股市大跌之外,最火的就是《羊了个羊》以及如何通过第二关。都已经上了热搜。身边小伙伴也在玩,好奇心驱使下,上手玩了玩。然后,就是我勒个去。这么简单……做羊肉汤时,最忌直接炖,记住3放2不放,汤浓奶白,特香导语:做羊肉汤时,最忌讳直接炖,记住3放2不放,汤浓奶白,不腥也不膻!老话说得好秋天一碗汤,不用医生帮,秋季的气候特别干燥,所以秋天养生,滋阴润燥很重要。秋天适合多喝一些……尼安德特人可能与现代人类共存了近3000年克利夫兰自然历史博物馆现代人类和尼安德特人头骨的比较与升级后的iPhone一样,现代人在欧洲的到来并没有导致之前的机型立即消失,而是预示着智人和尼安德特人之间的一段重叠时……
死都不惧,生亦何惧死亡相约,跳时的刹那轻松,只知道你离开了痛苦,离开了灾难,同时也离开了美好!人生,本就是一台向前行走的,永不停歇机器,旅途中的幸福与苦难都无法叫停它行走的脚步,而我们必须……我们终将经历苦难,这是此生为人必不可少的体验01hr有人说生活往往就是一个磨难接着一个磨难,正所谓人生不如意之事十有八九,天有不测风云,人有旦夕祸福,这个往往才是生活里的常态。不管是哪一种宗教,往往都认为人生本就是……打开武汉周末踏春的另一种方式,到黄陂脉地湾召集萝卜开个会四月踏春季,春日赏花时,浪费这么美好的时节可不行,所以这些天我一直在武汉黄陂转悠,云雾山上看了杜鹃映山红,锦里沟淋了浪漫樱花雨,木兰湖边住了裕和夫子山居、青荷小木,惬意的不得了……人老了,逐渐斩断了这几种缘分,预示他将走到尽头人这一生,就是一次旅行。我们都是旅行车上的观览者,只有单程车票,而没有返程车票。到点了,终究是要下站的。下站,不一定是归去,还有远离红尘,超脱俗世的意思。要知道,人有两次……首创躺式电芯上汽MGMULAN全新跨界车首发【太平洋汽车网新车频道】上汽MG正式发布了旗下全球纯电超能跨界车MGMULAN(询底价查参配),新车基于上汽星云纯电专属架构打造,MGMULAN作为MG投向全球市场的重磅产品,……如果地球连续下雨一年,还会有陆地吗?人类会不会因此灭绝?你知道吗?2。3亿年前,地球上曾遭遇过一场持续200万年的暴雨,这场暴雨导致地球生物大洗牌,地球环境彻底改变,恐龙一族因此一跃成为新的生物霸主。那么如果到了现在,地球连续下雨一……体内痰多如何化散?张仲景告诉你,治痰先找源,化痰先散寒寒痰属于中医术语,是指外感风寒引起的咳嗽,或脾肾阳虚引起的痰证,或湿痰潴留于肾经导致的咳喘。代表症状就是痰白清稀,咳嗽喘促,形寒肢冷,胸部满闷,口淡不渴,大便溏泄。治疗多用宣肺……荣耀6000mAh新机曝光,7。2英寸大屏4nm100W,值声明:原创不易,禁止搬运,违者必究!在今年,手机市场上又出现了不少的折叠屏手机,这其实也就意味着,用户对折叠屏手机的认可,从侧面也反应出,大屏幕更吃香。进入到智能手机时代……梦华录不光辜负了关汉卿,还辜负了刘亦菲冰川思想库研究员丨连清川《梦华录》昨晚播了第28集。在预告片花里出现了宋真宗微服出宫,在永安楼里色眯眯地瞄着赵盼儿。我心里就是一咯噔:完犊子了,这是要塌房啊。……杨澄甫太极拳体用全书自序白话译文杨澄甫先生所著的《太极拳体用全书》一书自1934年2月在上海出版以来,即被公认为是太极拳的经典文献。这本书1948年在香港再版,1957年5月又在北京重新出版,至1963年3月……跳水世界杯西安站15日看点男板一哥王宗源独守阵地4月15日,2023年跳水世界杯西安站将进入第二个比赛日,当日将进行女子3米跳板以及男子3米跳板两个单人项目的争夺,其中上午为预赛下午为决赛。男子3米跳板比赛中,中国队只有王宗……研报新知强美元周期结束避险标的,黄金的黄金时刻能持续多久界面新闻记者陶知闲界面新闻编辑陈菲遐日前,中国银河证券给予黄金行业推荐评级(《战略性投资机会来临,黄金进入新一轮牛市》)【核心观点】1、历史表明,金价受……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网