Docker+Jenkins+GIT+Tomcat实战持续化集成 | 您所在的位置:网站首页 › maven中的tomcat › Docker+Jenkins+GIT+Tomcat实战持续化集成 |
一、概要
开发将源码上传到github仓库,通过jenkins持续集成引擎结合git工具,将源码拉取到jenkins服务器,通过工具maven在本地讲源码编译打包成war包,在ssh到Docker宿主机,通过执行脚本生成制作自定义的Dockerfile,最终执行生成images,并启动container,即启动了包含war包的tomcat,即可实现对外提供web服务。 二、环境部署| 主机名 | IP地址 |作用 | -------- | -------- | | Docker-server | 172.20.6.20 |Docker宿主机 |Jenkins-server | 172.20.6.22 | Jenkins服务器 2.1 Jenkins服务器配置Jenkins的安装及配置Jenkins服务器的相关工具(maven、git、ssh)配置,详细步骤可参考jenkins笔记(1)的相关工具的安装及配置。 2.2 Docker宿主机配置Docker的基础命令可参考容器Docker详解,需要在Docker宿主机pull下tomcat的基础环境以及jenkins服务器通过docker用户登录Docker宿主机,讲war包发布到制定目录,执行特定脚本来生成Dockerfile,最终根据Dockerfile生成images,并启动基于包含war包的container,从而实现对外提供WEB服务。 创建ssh发布用户及目录 useradd docker echo "docker:docker" |chpasswd #为docker用户设置密码 mkdir -pv /data/dockerfiles/scripts上传脚本 将脚本上传到 /data/dockerfiles/scripts,命名为devops,此名称可自定义,但是之后在配置jenkins执行ssh命令时候的脚本名称需要一致。由于脚本内部的分发路径是写的绝对路径,所以需要讲目录为固定,也可以根据实际修改。此脚本author:junsansi,可以参考其进行修改。 cat >/data/dockerfiles/scripts/devops.sh> ${DOCKER_FILE} echo "EXPOSE 8080" >> ${DOCKER_FILE} echo "CMD /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out" >> ${DOCKER_FILE} cat ${DOCKER_FILE} echo "**Init dockerfile end." # Build dockerfile cd ${DOCKER_FILE_DIR} rm *.war -rf mv /data/dockerfiles/war/${DOCKER_NAME}/*.war ./ echo "" echo "##Build dockerfile for "${DOCKER_NAME} /usr/bin/docker build -t ${DOCKER_NAME}:${PROJ_VERSION} . # Run docker container echo "" echo "##Running docker container: "${DOCKER_NAME} /usr/bin/docker run --name ${DOCKER_NAME}_d1 -d -p ${SPORT}:${DPORT} ${DOCKER_NAME}:${PROJ_VERSION} EOF chmod +x /data/dockerfiles/scripts/devops.sh chown docker.docker /data/dockerfiles -RDocker宿主机获取tomcat镜像 docker pull docker.io/tomcat 使用docker images查看tomcat镜像 登录Jenkins的WEB界面 3.1 配置Docker宿主机的ssh信息系统管理—系统设置—Publish over SSH—增加SSH Server 添加SSH Server可以使用密钥形式添加,也可以直接使用用户名密码, 此处使用用户名密码,选择 Use password authentication, or use a different key,即docker用户的密码,进行登录发布,之前已经讲/data/dockerfiles目录的属主属组更改为docker,确认Jenkins服务器使用docker用户可以正常在此目录下进行后续操作。
源码管理选择git,填入仓库url:[email protected]:redhatxl/zrlog.git 在build的Goals and options添加maven构建参考及命令:clean install -D maven.test.skip=true 增加构建后步骤—选择Send build artifacts over SSH SSH-Server name选择Docker宿主机 Transfers中填写Source files:target/*.war Remove prefix:target/ Remote directory:/war/$project_name,即在远端/data/dockerfiles下的war目录(/data/dockerfiles/war/docker01-tomcat-zrlog) Exec command:/data/dockerfiles/scripts/devop.sh $project_name zrlog $release_branch 8888 8080 即jenkins服务器ssh到docker宿主机之后执行的脚本命令,执行/data/dockerfiles/scripts/devop.sh脚本,此脚本需要传入5个参考, project_name:项目名称,即docker生成images的名称 zrlog:即项目名称 release_branch:在git上提交的分支,此处我们只有master分支 两个端口,前一个端口及宿主机的监听端口,后一个端口及映射到docker容器内部的端口,在此处使用的为tomcat,默认的为8080端口。 添加增加构建后操作,选择Editable Email Notification,利用插件邮件来发送通知。 可以根据需求自定义邮件主题与内容,此处添加信息接受人,由于全局配置了always,在高级设置内,填写接受人邮箱。 选择Build with Parameters,然后在右边release_branch内选择需要执行的github上的分支,此处为master,同理选择 project_name,为docker images的name可以选择自己添加自定义的名字,点击开始构建 在配置jenkins的ssh后的命令我们可以添加多个server从而实现分布式,同时我们也可以对在一台主机上通过区分端口号来生成多个images并启动多个不通端口的container 在General的参数化构建过程中增加第三个参数proxy_port可以设置为docker宿主机的本地监听端口从而实现多端口多实例 |
CopyRight 2018-2019 实验室设备网 版权所有 |