范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Springbootdockerjenkins持续集成实战操作

  1 操作步骤1.1 docker安装
  在虚拟机(vitualBox)下执行yum命令:
  [root@centos-vagrant ~]# yum install docker
  安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:
  [root@centos-vagrant ~]# service docker start
  查看镜像:
  [root@centos-vagrant ~]# docker images
  安装问题:
  在执行yum install docker 命令是安装不成功的问题:
  清除一下缓存:
  [root@centos-vagrant ~]# yum clean all
  [root@centos-vagrant ~]# yum makecache
  再执行安装命令:
  [root@centos-vagrant ~]# yum install docker
  1.2 配置springboot
  pom.xml配置:
  <? xml version=  "1.0"   encoding=  "UTF-8"  ?>
  <  project   xmlns=  "http://maven.apache.org/POM/4.0.0"
  xmlns:  xsi  =  "http://www.w3.org/2001/XMLSchema-instance"
  xsi  :schemaLocation=  "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"  >
  <  modelVersion  > 4.0.0 modelVersion  >
  <  groupId  > org.zz.springboot groupId  >
  <  artifactId  > springbootdemo artifactId  >
  <  version  > latest version  >
  <  parent  >
  <  groupId  > org.springframework.boot groupId  >
  <  artifactId  > spring-boot-starter-parent artifactId  >
  <  version  > 1.5.2.RELEASE version  >
   parent  >
  <  dependencies  >
  <  dependency  >
  <  groupId  > org.springframework.boot groupId  >
  <  artifactId  > spring-boot-starter-web artifactId  >
   dependency  >
  <  dependency  >
  <  groupId  > org.springframework.boot groupId  >
  <  artifactId  > spring-boot-starter-test artifactId  >
  <  scope  > test scope  >
   dependency  >
   dependencies  >
  <  properties  >
  <  project.build.sourceEncoding  > UTF-8 project.build.sourceEncoding  >
  <  docker.image.prefix  > demo docker.image.prefix  >
  <  spring.boot.version  > 1.3.3.RELEASE spring.boot.version  >
   properties  >
  <  build  >
  <  plugins  >
  <  plugin  >
  <  groupId  > org.springframework.boot groupId  >
  <  artifactId  > spring-boot-maven-plugin artifactId  >
   plugin  >
  <  plugin  >
  <  groupId  > com.spotify groupId  >
  <  artifactId  > docker-maven-plugin artifactId  >
  <  version  > 0.4.3 version  >
  <  configuration  >
  <  imageName  > ${docker.image.prefix}/${project.artifactId} imageName  >
  <  dockerDirectory  > src/main/docker dockerDirectory  >
  <  resources  >
  <  resource  >
  <  targetPath  > / targetPath  >
  <  directory  > ${project.build.directory} directory  >
  <  include  > ${project.build.finalName}.jar include  >
   resource  >
   resources  >
   configuration  >
   plugin  >
   plugins  >
   build  >
   project  >
  详见附录:pom.xml文件
  创建dockerfile文件:
  项目中创建"src/main/docker/Dockerfile"文件,如下:
  配置dockerflie(用于生成镜像):
  FROM frolvlad/alpine-oraclejdk8:slim
  VOLUME /tmp
  ADD demo-1.0.jar app.jar
  RUN sh -c "touch /app.jar"
  ENV JAVA_OPTS=""
  ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  解释下这个配置文件:
  · VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
  · 项目的 jar 文件作为 "app.jar" 添加到容器的
  · ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间 ,添加一个系统属性指向 "/dev/urandom" 作为 Entropy Source
  见附录Dockerfile 文件
  编写 Spring Boot 应用:
  package  com.test.demo;
  import  org.springframework.boot.SpringApplication;
  import  org.springframework.boot.autoconfigure.SpringBootApplication ;
  import  org.springframework.web.bind.annotation.RequestMapping ;
  import  org.springframework.web.bind.annotation.RestController ;
  /**
  * 主应用入口
  *  @author   waylau.com
  *  @date  2016年3月19日
  */
  @SpringBootApplication
  @RestController
  public class  Application {
  @RequestMapping ( "/" )
  public  String home() {
  return  "Hello Docker World."
  +  "
  Welcome to waylau.com" ;
  }
  public static void  main(String[] args) {
  SpringApplication. run (Application. class , args);
  }
  }
  代码类见附件Application.java 1.3 构建 Docker Image1.3.1 虚拟机(vitualBox)挂载本地项目路径
  启动虚机:
  然后登录虚机:
  [root@centos-vagrant ~]# ssh -p 2222 root@127.0.0.1
  修改seetting文件:
  [root@centos-vagrant ~]# cd /opt/apache-maven-3.5.0/conf/
  修改地址: /media/sf_repository
  1.3.2 生成镜像(mvn package docker:build)
  重启虚机
  输入命令:
  [root@centos-vagrant ~]# df
  进入到:
  cd /media/sf_wlw_citic/workspace_task_scheduler_lose目录(也就是项目的目录):
  执行命令:
  [root@centos-vagrant ~]# mvn package docker:build
  需要注意:
  在执行mvn package docker:build ,先输入命令docker images 如果提示如下图,请先启动docker,启动命令:systemctl start docker,再执行mvn package docker:build 命令,不然构建镜像会失败。
  执行后构建成为 docker镜像
  输入命令:
  [root@centos-vagrant ~]# docker images
  可以看到demo/demo就是生成的镜像1.3.3 启动项目
  运行 Docker Image(启动项目):
  输入命令
  [root@centos-vagrant ~]# docker run -p 8080:8080 -t demo/demo
  这里指定端口为8080
  运行成功:
  浏览器访问:
  输入http://localhost:8080/
  发现访问不了,原因没有做端口映射,如下:
  在虚机(vitualBox)里配置:
  这个时候再输入http://localhost:8080/ 就可以访问了
  1.4 杀掉已启动的镜像
  先查看进程,杀掉已启动的进程:
  [root@centos-vagrant ~]# docker ps
  然后输入命令:
  [root@centos-vagrant ~]# docker kill -s KILL bfbf6bcd0eb6
  删除镜像:
  先查询记录:
  [root@centos-vagrant ~]# docker ps –a
  可以看到有4个线程在启动,我们杀掉他们:
  [root@centos-vagrant ~]# docker rm b427a2d85040 f91a2e1d0f86 0297d2ecbff3 bc5ca853a648
  再查看:
  线程都清掉了:
  此刻执行:
  [root@centos-vagrant ~]# docker images
  1.5 Docker清除所有多余的docker镜像释放空间
  执行:
  [root@iz2ze215l4uqqv8jiei1aaz ~]# docker system prune -a –f
  再执行,多余的都清除了
  [root@iz2ze215l4uqqv8jiei1aaz ~]# docker images
  1.6 本地虚机doc打包成tar上传至134服务器
  打包镜像:
  [root@centos-vagrant ~]# docker save -o /home/ hub.dashboardengine.tar hub.dashboardengine/hub.dashboardengine:latest
  本地 打包成tar文件,通过ftp传输到134 服务器上
  输入下列命令恢复镜像,自动加载到docker容器:
  [root@centos-vagrant ~]# docker load -i /home/ hub.dashboardengine.tar
  查看镜像:
  [root@centos-vagrant ~]# docker images
  启动项目:
  [root@centos-vagrant ~]# docker run -d -p 9090:9090 -t hub.dashboardengine/hub.dashboardengine
  注意:-d表示后台启动
  输入地址访问:
  http://10.247.32.134:9090/iot/getMsgCount
  1.7 docker推送镜像至私服
  把一个镜像push到私有仓库中
  查看一下镜像
  [root@centos-vagrant ~]# docker images
  以demo/demo这个镜像为例。
  接下来修改一下该镜像的tag,输入下面命令:
  [root@centos-vagrant ~]# docker tag demo/demo registry.user.pcloud.citic.com/zxyw/cloud/demo/demo:tag
  发现tag被修改了,接下来执行推送命令:
  [root@centos-vagrant ~]# docker push registry.user.pcloud.citic.com/zxyw/cloud/demo/demo:tag
  Get https://registry.user.pcloud.citic.com/v1/_ping : dial tcp 10.247.20.205:443: i/o timeout
  这时会发现推送超时了,此时需要修改docker的配置文件,解决办法如下:
  [root@centos-vagrant ~]# touch /etc/docker/daemon.json
  [root@centos-vagrant ~]# vi /etc/docker/daemon.json
  加入本地registry的地址, 如:
  { "insecure-registries":["registry.user.pcloud.citic.com"] }
  需要注意:
  registry.user.pcloud.citic.com为私服地址,这里我直接加在"live-restore":true的后面,然后加了一个逗号隔开。
  添加主机host:
  vi /etc/resolv.conf
  nameserver 10.247.64.29
  nameserver 10.247.64.28
  vi /etc/hosts
  10.247.20.205 registry.user.pcloud.citic.com
  然后重启docker服务:
  [root@centos-vagrant ~]# systemctl restart docker.service
  执行推送命令:
  [root@centos-vagrant ~]# docker push registry.user.pcloud.citic.com/zxyw/cloud/demo/demo:tag
  3f5ead2a3e3b: Pushed
  decb4e431a22: Pushed
  aea4c1b2c226: Pushed
  dcf909146faa: Pushed
  23b9c7b43573: Pushed
  tag: digest: sha256:a62b8f4cf6f446b81c5cb398499ef11e34bfe491a417e2959e2d05086768005e size: 1375
  推送成功,1.7.1 下载私服镜像
  下载私服镜像:
  [root@centos-vagrant ~]# docker pull registry.user.pcloud.citic.com/zxyw/cloud/demo/demo:tag
  下载成功,查看一下镜像
  [root@centos-vagrant ~]# docker images
  启动:
  [root@centos-vagrant ~]# docker run -p 8081:8081 -t registry.user.pcloud.citic.com/zxyw/cloud/demo/demo:tag
  1.8 docker-compose插件安装
  输入下面命令安装插件:
  [root@centos-vagrant ~]# curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  安装完成后,执行运行权限:
  [root@centos-vagrant ~]# sudo chmod +x /usr/local/bin/docker-compose
  查看版本:
  [root@centos-vagrant ~]# docker-compose --version
  可以看到为当前为1.12.0版本,则安装成功。
  1.8.1 创建test.yml文件
  把test.yml文件放入/home/vagrant/composetest目录下:
  复制下面内容到test.yml文件里:
  srvmgt-app:
  image: demo/demo
  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:3306/iot
  restart: always
  1.8.2 启动docker-compose
  [root@centos-vagrant ~]# docker-compose up
  需要注意:
  启动docker-compose,需要在yml文件存在的当前目录下执行,例如:我yml文件在/home/vagrant/composetest这个目录
  ps查看:
  [root@centos-vagrant ~]# docker ps:
  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  f66814e2b624 demo/demo "sh -c "java $JAVA_OP" 15 minutes ago Up 15 minutes 0.0.0.0:9090->9090/tcp composetest_srvmgt-app_1
  浏览器访问:
  http://localhost:9090/test/
  1.9 jenkins持续集成1.9.1 jenkins安装
  本文直接使用war包安装
  下载地址:https://jenkins-ci.org/content/thank-you-downloading-windows-installer
  war包有两种安装方法
  方法一
  下载jenkins.war, 拷贝到D:JavaTooljenkins()下,然后运行java -jar jenkins.war. (注意需要先安装JDK,然后设置JAVA_HOME环境变量且将%JAVA_HOME%bin加入到PATH环境变量中)
  运行如下:
  访问http://localhost:8080 , jenkins的主界面如下:
  方法二
  把Jenkins 1.409.1版解压,把得到的war包直接扔到tomcat下,启动tomcat,Jenkins就安装完毕,访问http://localhost:8080/jenkins
  这里采用方法二方式,直接放tomcat里启动。
  1.9.2 构建maven项目
  构建maven项目前,把相关的插件安装上,如:
  增加需要用到的插件:Deploy to container Plugin、GIT plugin、Maven Integration plugin、Publish Over SSH、SSH Slaves plugin、Subversion Plug-in,请用以下示范方法添加安装需要的插件
  调整相关系统设置项,请自行找出列出的设置项并填写相关内容
  jdk配置:
  配置好点击save保存。1.9.3 配置远程服务器
  配置远程服务器,上传镜像1.9.4 新建maven项目集成至远程服务器
  配置git路径,从git的master下直接检出:
  执行本地脚本:
  deploy.sh文件在项目的根目录下,deploy.sh文件见附件2 ,如下图:
  配置远程上传脚本命令:
  hub.admin.engine.yml文件与Dockerfile文件见附件2 ,目录都在项目的根目录:
  保存后:
  点击项目:
  点击立即构建,持续集成就开始了
  这里构建成功:
  注意
  构建的项目地址在:
  [root@centos-vagrant ~]# cd ~/.jenkins/workspace/
  或者输入:
  [root@centos-vagrant ~]# cd /root/.jenkins/workspace
  可以看到构建的所有项目,如下:
  登录服务docker imags查看镜像命令可以看到刚刚上传的镜像:
  docker ps命令可以看到项目也启动了:
  浏览器访问:
  http://10.247.32.134:8093/iot/channelManager/getChannelPageList
  1.9.5 Jenkins部署docker报错问题
  错误如下:
  error pulling image configuration: Get http://registry.oss-cn-beijing-zx-d01-a.pcloud.citic.com/docker/registry/v2/blobs/sha256/46/46df8683ac8fea45852a4b218a1c611b08fb1195bafa790fe9e2eec8b2867662/data?Expires=1499156631&OSSAccessKeyId=vIvJI9Xwy0M87Qb8&Signature=qaQOMawAE1a7jbQ2P9N2ahIyDVw%3D : dial tcp: lookup registry.oss-cn-beijing-zx-d01-a.pcloud.citic.com on 100.100.2.136:53: no such host
  找不到主机映射问题:no such host
  解决办法:
  vi /etc/resolv.conf
  添加相关的ip地址
  1.9.6 Jenkins配置部署发送邮件通知
  步骤1:
  步骤2:Jenkins Location下:
  步骤3:Extended E-mail Notification下:
  步骤4:
  步骤5:jenkins点击部署的项目,如下:
  点击配置:
  选择:下拉选择:
  在Project Recipient List里加入邮箱即可,多个用逗号隔开,如1@126.com,2@126.com
  步骤6:最后点开:
  选择:
  保存就可以了。1.9.7 虚拟机(virtualBox)登录jenkins
  先安装vagrant:
  进入到varant 的目录:
  C:Usersuisftechvagrant
  启动:
  vagrant up
  登录:
  ssh -p 2222 root@127.0.0.1
  默认密码:vagrant
  修改C:UsersuisftechvagrantVagrantfile 文件:
  config.ssh.username = "vagrant"
  config.ssh.password = "vagrant"
  vb.name= "centos.base"
  登录成功后:
  启动tomcat并且启动jenkins:
  注意:将jenkins.war包放到tomcat的webapps下:
  启动完需在virtualBox配置端口映射:
  这里做了端口映射才能正常访问,登录jenkins:
  http://127.0.0.1:8080/jenkins
  如此登录成功1.10 Jenkins持续集成至阿里云服务1.10.1 新建项目
  配置好git路径:
  执行脚本:
  注意:
  dashboardengine.sh脚本放在项目的根目录,dashboardengine.yml也是在同目录下,如下图:
  脚本详细见附录3 1.10.2 集成至阿里云注意问题
  集成之前需先在阿里云服务里建立appname,如:
  appname="hub-dashboardengine-app"
  需要先将hub-dashboardengine-app添加阿里云服务后端,再做集成。 1.11 Linux定时任务1.11.1 Linux定时清理过时的docker镜像
  1. 键入 crontab -e 编辑crontab服务文件,如下:
  30 23 * * * /bin/sh /home/user/scheduler/cleardockerimg.sh  //每晚的11:30
  注意:没有安装crontab 键入yum install crontabs安装。
  2. 查看该用户下的crontab服务是否创建成功, 用 crontab -l 命令
  3. 启动crontab服务
  一般启动服务用 /sbin/service crond start 若是根用户的cron服务可以用 sudo service crond start, 这里还是要注意 下 不同版本Linux系统启动的服务的命令也不同 ,像我的虚拟机里只需用 sudo service cron restart 即可,若是在根用下直接键入service cron start就能启动服务
  这里本地启动是: /bin/systemctl start crond.service
  这里本地停止是: /bin/systemctl stop crond.service
  4. 查看服务是否已经运行用 ps -ax | grep cron
  5. 删除任务调度工作
  crontab -r //删除所有任务调度工作
  6. 删除docker镜像shell脚本:
  #!/bin/sh
  docker rmi $(docker images | grep dev-)

这是中国足球的悲哀!国青队外教能晋级亚青赛正赛真是不可思议在日前刚落幕的U20亚青赛预选赛上,中国队以成绩前五佳的小组第二身份获得了晋级正赛的资格。对于这个结果,国青队主帅安东尼奥在接受采访时评价道能带队晋级亚青赛正赛是不可思议的结果,教中国金花双双晋级4强!东京成福地,郑钦文创造生涯最佳张帅复仇9月23日,2022年WTA500巡回赛日本东京站展开女单14决赛争夺,中国两位金花老将张帅和19岁小将郑钦文携手出战,最终双双取得胜利,一同晋级4强。其中张帅完成了对克罗地亚名将特斯拉降价惹怒老车主,新能源车直销模式弊端尽显?撰文陈一汛编辑孙春芳图视觉中国特斯拉的一则降价消息,让等等党满心欢喜,却让不少特斯拉老车主,尤其是刚提车不久的用户,有些郁闷。根据特斯拉消息,从9月16日到本月月底,特斯拉旗下所有人民财评加强小程序电商资金监管迫在眉睫来源人民网观点频道原创稿近日,多位消费者投诉,在小程序易联购上购买苹果手机,付货款后,所买手机迟迟不发货,而想要退款时却遇到了平台跑路的情况。事件公布后,立即引起人们热议。很多消费iPhone14Pro使用第三方应用程序时相机会发出吱吱声和振动iPhone14Pro使用第三方应用程序时相机会发出吱吱声和振动iPhone14Pro以及其他新的Apple智能手机已经到了用户手中。永远不能排除错误,但在特殊错误的情况下,相机不他俩又被拍到了?停车场身体亲密互动,网友死鸭子嘴硬近日,被传了很久绯闻的黄子韬和徐艺洋又双叒叕被拍到了。当天两个人一起出现在某停车场,镜头中两个人凑在一起看手机随后,徐艺洋就对黄子韬展开了暧昧互动,比如用身体撞黄子韬,又或者将头发接地气,王宝强带女友冯倩下地干活,网友新嫂子可比马蓉靠谱近日,王宝强上传了一组自己下地干活的视频,不得不说,王宝强真是农民的儿子,虽然成名多年,但是割起稻子来还是十分熟练的,不仅如此,王宝强还能一边聊天一边干活,看得出来他十分的向往这样27岁清纯女星不雅照被曝出,本尊火速回应,网友的评论褒贬不一近段时间娱乐圈里发生的事情几乎不断,但其中的真真假假却很难让人辨别出。前不久,娱乐圈里又有一清纯女星出事了,一向以青春形象和人设出道的女演员薛卉葳竟在网上被曝出不雅照,还有人传出她用航天器把小行星撞离轨道!人类首个行星防御任务即将执行人类有史以来第一个行星防御任务即将执行!据英国新科学家杂志网站20日报道执行美国国家航空航天局(NASA)的双小行星重定向测试(DART)任务的航天器将于9月26日撞击小行星DimNASA将执行人类有史以来第一个行星防御任务当地时间9月22日,据美国有线电视新闻网(CNN)报道,人类有史以来第一个行星防御任务即将执行。执行美国国家航空航天局(NASA)的双小行星重定向测试(DART)任务的航天器将于9人类为何会存在?我们存在的意义到底是什么?数十万年前,原始人类开始意识到自己处在一个奇怪的地方,那个地方充满了各种生命,可以利用周围的事物制造出更多东西。天上漂浮着黄色的球体温暖着我们,夜晚则是满天繁星。当时的人们认为这个
台湾省宣布将于9日至11日举行实弹军事演习,台民众又要烧山?据中国台湾省中央通讯社(CNA)报道,一名军方高级官员透露,台军将于8月9日至11日在台岛南部地区举行实弹射击演习,此举旨在检验部队的作战能力,并不针对第三方。此前,台军炮兵部队在C919试飞结束,想要从民航市场重重竞争中杀出血路,胜算几何?中国商飞的C919项目在2008年启动,到2022年中旬时接近完成,目前它的试飞已经结束,距离投入商用也不远了。很多人认为,C919商用,意味着民航市场正式进入了AIRBUS(法国小米新品发布会定档8月11日!除了折叠屏手机,还有平板耳机有一说一,小米发布会的关注度非常高,发布的产品也是相当多,而且雷军的最消息来看,小米的秋季新品发布会已经官宣定档于8月11日,除了发布多款新品之外,雷军还会进行年度演讲,预计是演讲美国将联合印度,在中印边境搞军演,我们该如何应对?美国将联合印度在中印边境搞军演,究竟出于怎样的目的?对我国会有何影响?近日,美国媒体放风称美军将在中印边境争议地区的附近,同印军开展联合军演,地点位于印度北阿坎德邦的奥利地区,当地小米官宣MIXFold2新一代折叠屏手机,8月11日将正式发布8月9日消息,去年3月30日,小米正式发布了小米首款折叠屏手机小米MIXFold。今日,小米官宣了新一代折叠屏手机小米MIXFold2,该机将于8月11日正式发布。小米官方称,在全高端新能源市场迎新,阿维塔11强势入局背靠长安宁德时代和华为三巨头的阿维塔11也许不是走量车型,但却是高端新能源市场搅局者。8月8日,阿维塔旗下首款车型阿维塔11正式上市,新车定位纯电轿跑SUV,此次共发布三款车型,售不论男女,若经常头晕头痛,可以常吃1物,胆固醇嗖嗖降,身体棒张阿姨今年65岁,退休后就一直在家带孙子,把孙子的生活作息照顾得很好,但却很少关注自己的身体健康。最近半个月,阿姨经常感觉自己头晕头痛,四肢乏力,本以为是孙子放暑假照顾得太累导致,华春莹四问掷地有声!解放军创造的灰色地带让美模糊政策彻底崩溃文郑敢言中国外交部发言人华春莹8月4日面对记者提问美官员称台海现状改变责任在中方时抛给美国四个问题第一,什么是台湾问题的现状?第二,谁在制造台海危机?第三,谁应该为台海紧张态势负责解放军磨刀不误砍柴工,任务AI派单化,敢战能战善战保和平解放军目前己拥有全世界最强,超越美军LINK16的下一代数据链系统DTS03!有了它,解放军三军战士打仗立功堪比外卖滴滴抢单!得益于20年来大力发展的多军种联合指挥作战数据链系统,东部战区在台岛演训联合封控台军称今有解放军45架次军机10艘次军舰现身台海中国台湾网8月9日讯台湾中时新闻网今日(9日)晚间引述台防务部门消息称,至17时,共有解放军45架次军机10艘次军舰,持续在台海周边活动,进行联合海空行动。报道称,其中有16架次解台海局势预测因美国国会众议长佩洛西访台,公然违背一个中国原则,挑衅中国主权,引发台海危机,解放军持续军演,后续台海局势会如何走向?1美国会让其林肯号航母战斗群持续在台海周边第一岛链区域游弋,与