码头工人基础教程可参考:容器码头工人详解
詹金斯基础知识可参考:詹金斯笔记(1)
Git基础知识可参考:Git笔记
文件脚本内容参考:junsansi,可以根据实际项目具体修改脚本。
一、概要
开发将源码上传到github仓库,通过詹金斯持续集成引擎结合git工具,将源码拉取到詹金斯服务器,通过工具maven在本地讲源码编译打包成战争包,在ssh到码头工人宿主机,通过执行脚本生成制作自定义的Dockerfile,最终执行生成图像,并启动容器,即启动了包含战争包的tomcat,即可实现对外提供web服务。
引用>二、环境部署
主机名 IP地址 作用 Docker-server 172.20.6.20 码头工人宿主机 Jenkins-server 172.20.6.22 詹金斯服务器2.1詹金斯服务器配置
詹金斯的安装及配置詹金斯服务器的相关工具(maven, git, ssh)配置,详细步骤可参考詹金斯笔记(1)的相关工具的安装及配置。
2.2码头工人宿主机配置
码头工人的基础命令可参考容器码头工人详解,需要在码头工人宿主机拉下tomcat的基础环境以及詹金斯服务器通过码头工人用户登录码头工人宿主机,讲战争包发布到制定目录,执行特定脚本来生成Dockerfile,最终根据Dockerfile生成图像,并启动基于包含战争包的容器,从而实现对外提供WEB服务。
创建ssh发布用户及目录
引用><代码> useradd码头工人 回声“码头工人,码头工人”| chpasswd #为码头工人用户设置密码 mkdir pv/数据/dockerfiles/脚本代码>上传脚本
引用>将脚本上传到/数据/dockerfiles/脚本,命名为devops,此名称可自定义,但是之后在配置詹金斯执行ssh命令时候的脚本名称需要一致。由于脚本内部的分发路径是写的绝对路径,所以需要讲目录为固定,也可以根据实际修改。此脚本作者:junsansi,可以参考其进行修改。
<代码>猫祝辞/数据/dockerfiles/脚本/devops.sh<& lt; EOF # !/bin/bash #这个脚本函数是: #部署新集装箱码头工人 # #用户YYYY-MM-DD -行动 # junsansi 2016-01-25 -创建 parasnum=5 #函数 help_msg () { 猫& lt; & lt;帮助 +错误原因: $ # +你输入参数 +总参数进行数必须parasnum美元 + 1:DOCKER_NAME + 2:PROJECT_NAME + 3:PROJECT_VERSION + 4:SOURCE_PORT + 5:DESTINATION_PORT 帮助 } #检查参数数量 如果($ # - ne $ {parasnum}) 然后 help_msg 退出 fi #初始化参数。 DOCKER_NAME=1美元 PROJECT_NAME=2美元 PROJ_VERSION=3美元 运动=4美元 DPORT=5美元 PROJ_VERSION=$ {PROJ_VERSION/段镏值钠鹪础?/" "} DOCKER_FILE="/数据/dockerfiles/$ {DOCKER_NAME}/Dockerfile” DOCKER_FILE_DIR=/数据/dockerfiles/$ {DOCKER_NAME} 如果[!- d $ {DOCKER_FILE_DIR}];然后 mkdir - p $ {DOCKER_FILE_DIR} fi #检查码头工人的图片 DOCKER_IMAGE='/usr/bin/码头工人图片| grep $ {DOCKER_NAME} | awk - f ' ' '{打印3美元}' ' 如果(- n " $ {DOCKER_IMAGE} ");然后 #检查集装箱码头工人 对直流的/usr/bin/码头工人ps - $ {DOCKER_NAME} | | grep awk - f”“{打印1美元}' ' 做 回声“停止容器:${直流}”/usr/bin/docker停止${直流} #删除在集装箱码头工人的存在 回声”# #删除存在Container_Id:“${直流}/usr/bin/docker rm ${直流} 完成 #删除当码头工人的形象存在 回声”#删除存在的形象:“$ {DOCKER_IMAGE}/usr/bin/docker rmi $ {DOCKER_IMAGE} fi # Init dockerfile 回声“* * Init dockerfile开始:" $ {DOCKER_FILE} 回声从“tomcat”比;$ {DOCKER_FILE} 回声的维护者junsansi“junsansi@sina.com”在祝辞$ {DOCKER_FILE} 回声“添加*。战争/usr/local/tomcat/webapps/$ {PROJECT_NAME}。战争”,祝辞的在$ {DOCKER_FILE} 回声“公开8080”在祝辞$ {DOCKER_FILE} 回声”CMD/usr/local/tomcat/bin/startup.上海,,tail - f/usr/local/tomcat/logs/catalina.“在祝辞$ {DOCKER_FILE} 猫$ {DOCKER_FILE} 回声“* * Init dockerfile结束。” #构建dockerfile cd $ {DOCKER_FILE_DIR} rm *。战争射频 mv/数据/dockerfiles/战争/$ {DOCKER_NAME}/*。战争。/回声”“ 回声“# #建立dockerfile“$ {DOCKER_NAME}/usr/bin/docker构建- t $ {DOCKER_NAME}: $ {PROJ_VERSION}。 #运行码头工人容器 回声”“ 回声”# #码头工人容器:" $ {DOCKER_NAME}/usr/bin/docker运行——名称$ {DOCKER_NAME} _d1 - d - p ${运动}:$ {DPORT} $ {DOCKER_NAME}: $ {PROJ_VERSION} EOF chmod + x/数据/dockerfiles/脚本/devops.sh 乔恩码头工人。码头工人/数据/dockerfiles - r码头工人+詹金斯+ GIT + Tomcat实战持续化集成