【gitlab+jenkins+docker】第七节 自动生成docker容器并启动项目

Yvonne ·
更新时间:2024-09-20
· 775 次阅读

【gitlab+jenkins+docker】手把手教你搭建基于gitlab+jenkins+docker的项目的自动化部署流程前言jenkinsPost Steps运行job验证后记跳转 前言

下面我们进行最后的工作,生成容器启动项目。

jenkins

回到我们的jenkins页面,点击我们的任务,进入配置:
在这里插入图片描述
拉至最末端的Post Steps:
在这里插入图片描述
下面介绍下这段代码。

Post Steps

代码明细:

PATH1="/var/jenkins_home/workspace/server-eureka/market/eureka-server"; ZIP_NAME="server_eureka"; JAR_NAME="euraka-server-1.0.0-SNAPSHOT.jar"; JOB_NAME="server-eureka"; TOKEN_ID="94503900"; ports="8765"; command1="--"; docker="docker3"; YMLN="application.yml"; IP=宿主机IP #请更改 # 网卡名 NETWORK="aidata_network"; # 网卡ip NW_IP="10.111.113."; # 宿主机ip BINDING_IP="宿主机IP"; #请更改 # 注册域名(宿主机) BINDING_NAME="docker-server-host1"; project=${ZIP_NAME} ZIP_PATH=/${ZIP_NAME} PATH_ZIP="${ZIP_PATH}/${ZIP_NAME}.zip"; echo "*************************部署 ${project} 开始*************************" backup_dir=`date "+%F_%Hh%Mm%Ss"` # 形成zip包 mkdir -p ${PATH1}/zip/config; mkdir -p ${PATH1}/zip/logs; mv ${PATH1}/target/${JAR_NAME} ${PATH1}/zip; mv ${PATH1}/src/main/resources/*.xml ${PATH1}/src/main/resources/*.yml ${PATH1}/zip/config; mv ${PATH1}/config/* ${PATH1}/zip; cd ${PATH1}/zip; #zip -q -r ${ZIP_NAME}.zip *; tar -cvf ${ZIP_NAME}.tar.gz * ssh root@${IP} << remotessh rm -rf ${ZIP_PATH}; mkdir ${ZIP_PATH}; exit remotessh scp -P 22 ${ZIP_NAME}.tar.gz root@${IP}:${ZIP_PATH} ssh root@${IP} << remotessh tar -xvf ${ZIP_PATH}/${ZIP_NAME}.tar.gz -C ${ZIP_PATH} rm -rf ${ZIP_PATH}/${ZIP_NAME}.tar.gz cd ${ZIP_PATH} zip -q -r ${ZIP_NAME}.zip ${ZIP_PATH}/* #mv /root/${ZIP_NAME}.zip ${ZIP_PATH} sh /opt/automation/docker_job/deploy/start.sh ${PATH_ZIP} ${ports} ${command1} ${docker} ${project} ${YMLN} ${NETWORK} ${NW_IP} ${BINDING_IP} ${BINDING_NAME} sh /opt/automation/docker_job/docker_ssh.sh #rm -rf ${ZIP_PATH} exit remotessh echo "****************************部署 ${project} 至${docker}完毕! ****************************"

相关变量的释义如下:

PATH1: jenkins拉取gitlab项目代码在本地的存放路径(直接取到所部署项目的pom文件的父目录,比如在这里eureka的pom文件就在/var/jenkins_home/workspace/server-eureka/market/eureka-server下),路径构成中,/var/jenkins_home/workspace/是固定的,server-eureka是jenkins作业名,/market/eureka-server是项目结构(需更改); ZIP_NAME: 项目及相关文件打成的zip包名,约定是server_xxx或web_xxx(需更改,要遵循约定); JAR_NAME: 项项目jar包名(需更改); JOB_NAME:作业名,约定是server-xxx,或者web-xxx(需更改,要遵循约定); TOKEN_ID: 如果采用了shell远程触发模式的话,这里填写一下id就好,否则该参数可以注释掉(视情况,可选择注释掉); ports: 项目绑定的端口(docker容器的,不是宿主机的),这要去看你的项目设定(如果是springboot项目就去看看生效的application.yml里面设定的是哪个端口),不要担心端口已被占用,自动化部署脚本里面有逻辑分发一个可用的端口(视情况,需修改command1: 用来充填docker-compose的command属性,必要的操作已经封装在python代码中,“–”代表无需充填,若需要充填,则用“;”分隔命令,同时要注意转义,如:“cd\;ll”(视情况,根据需求决定要不要添加docker: 宿主机代号,约定为docker1/docker2/docker3……形式,单机版统一约定为docker3(单机版无需修改); YMLN: 此配置针对的是spring boot项目,这里指定哪个yml生效(一般有application.yml、application-dev.yml、application-test.yml、application-prod.yml),若是web项目就直接写application.yml就好了(视情况需更改); IP: 宿主机IP(需更改); NETWORK: docker桥接网卡名,第一节的时候创建过(一般无需更改); NW_IP: 网卡ip网段,最后一位数字不要填,因为是要动态生成的(一般无需更改); BINDING_IP: 宿主机IP(视情况需更改BINDING_NAME:注册eureka域名注册域名(这里有个小知识点,就是docker桥接模式下,容器进行服务注册,拿到容器的服务名无法寻回的问题,笔者踩了这个坑,并用这种方法填坑,即用宿主机的域名注册服务)(无需更改); project: 项目名(无需更改); ZIP_PATH: 宿主机中的ZIP包父路径(无需更改); PATH_ZIP: 宿主机中的ZIP包全路径名称(无需更改);
根据项目情况,进行修改后,点击保存退出。 运行job

点击立即构建后,进入构建过程:

在这里插入图片描述
查看控制台输出:
在这里插入图片描述
等待片刻后,执行成功:
在这里插入图片描述

验证

查看构建容器目录:
在这里插入图片描述
查看容器是否启动:
在这里插入图片描述
进入docker容器查看java进程是否正常:
在这里插入图片描述
页面访问一下服务:
在这里插入图片描述
OK,均正常,到这里,我们的框架算是搭完了,以后有项目,直接往jenkins上面配。

后记

关于远程触发(十分实用)存有疑问的朋友,可以下方留言交流。

跳转

第一节 基础环境介绍与准备
第二节 docker版gitlab安装和配置
第三节 docker版jenkins安装和配置
第四节 docker版mysql安装和配置
第五节 docker信息明细表设计与实现(含收集脚本)
第六节 docker容器自动化生成脚本
第七节 自动生成docker容器并启动项目


作者:Jack_Roy



自动 gitlab 启动 启动项 jenkins Docker

需要 登录 后方可回复, 如果你还没有账号请 注册新账号