Jenkins通知目标服务器拉去镜像并运行

前言
具体步骤是:在目标服务器上编写一个脚本,改脚本的主要内容是
1、要拉取那个镜像
2、判断当前服务器是否正在运行此容器有则停止并且删除
3、判断当前服务器是否存在该镜像有则删除
4、登录harbor仓库并拉去镜像运行

第一步:新建一个名为deploy.sh的shell脚本文件,并写入要拉取的镜像地址;
在这里插入图片描述
内容为:

harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
port=$5
imagesName=$6
echo $imagesName

依次为:harbor地址-harbor仓库-镜像名称-镜像版本-项目运行时的端口号-拼接的路径
最后把拼接成镜像地址并打印出来;

测试:
为新建成的deploy.sh添加全部用户可执行权限:

chmod a+x deploy.sh

在这里插入图片描述
在这里插入图片描述
这里拼接的镜像网址提前写好了,因为本来是要在脚本里写的但是脚本里总是打印不出‘’/‘’所以就直接传值的了;

第二步:查看当前镜像是否正在运行,是的删除

harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
port=$5
imagesName=$6
echo $imagesName
containerId='docker ps -a | grep ${project} | awk '{print $1}''
echo $containerId
if ["$containerId" != "" ] ; then
  docker stop $containerId
  docker rm $containerId

追加:
containerId='docker ps -a | grep ${project} | awk '{print $1}'' ##根据当前的镜像名称查询该镜像id echo $containerId ##打印该容器id if ["$containerId" != "" ] ; then ##判断该id是否为空 如果不为空就停止并且删除 docker stop $containerId docker rm $containerId

第三步:删除存在的当前镜像

harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
port=$5
imagesName=$6
echo $imagesName
containerId='docker ps -a | grep ${project} | awk '{print $1}''
echo $containerId
if ["$containerId" != "" ] ; then
  docker stop $containerId
  docker rm $containerId
fi
imageTag='docker images -a | grep ${project} | awk '{print $2}''
echo $imageTag
if [[ "$imageTag" =- "$version" ]] ; then
  docker rmi $imagesName
fi

追加:imageTag='docker images | grep ${project} | awk ‘{print $2}’ ’ ###查询该镜像的版本
echo KaTeX parse error: Expected 'EOF', got '#' at position 11: imageTag #̲##打印该镜像的版本 if […imageTag" =~ “$version” ]] ; then ###判断该镜像的版本是否包含传进来version 有则删除
docker rmi $imagesName
fi

第四步:拉去镜像并运行

harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
port=$5
imagesName=$6
echo $imagesName
containerId='docker ps -a | grep ${project} | awk '{print $1}''
echo $containerId
if ["$containerId" != "" ] ; then
  docker stop $containerId
  docker rm $containerId
fi
imageTag='docker images | grep ${project} | awk '{print $2}''
echo $imageTag
if [[ "$imageTag" =~ "$version" ]] ; then
  docker rmi $imagesName
fi
docker login -u admin -p 2220946265lisi $harbor_addr
docker pull $imagesName
docker run -d -p $port:$port --name $project $imagesName
echo "SUCCESS"

追加:docker login -u admin -p 2220946265lisi $harbor_addr ###登录harbor docker pull $imagesName #####拉取镜像 docker run -d -p $port:$port --name $project $imagesName #####运行镜像 echo "SUCCESS" #####输出成功

执行 ./deploy.sh 8.142.86.121:8098 firsth-harbor hellojk v3.0.0 8080 8.142.86.121:8098/firsth-harbor/hellojk:v3.0.0

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
成功!!!

配置jenkins去通知目标服务器执行改脚本:
在这里插入图片描述
将deploy.sh移动到/usr/bin设置为全局环境脚本,这样在任何目录下都可以直接运行
mv deploy.sh /usr/bin在这里插入图片描述
应用保存;再次构建;
在这里插入图片描述
成功!!!;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值