记一次公司项目docker镜像部署失败后的shell脚本部署
程序员文章站
2022-07-13 08:54:23
...
公司接了一个项目,给了外包来做,从做好到提测,终于要部署环境,可是问题也来了,竟然不能docker镜像部署,并且依赖的jar包运行还会报错,好在是一个maven的项目,那么只能自己手动打包,初期bug比较多,每次回归都要敲一堆重复的命令,很是繁琐,不得已还是得想一个一劳永逸的方案,这时shell的亮点就突出了。
下面是shell脚本示例:从中学到了命令、文件、变量、文件夹等if条件判断,以及>日志从定向输出,还有&后台执行jar:
#!/bin/sh
propid=`ps -aux|grep 项目jar名 |grep -v grep| awk ' {print $2} '`
# $?判断上一个命令是否成功, 成功返回0,其他则失败,其实就是有数据返回
# -n "${var}" 判断非空字符
if [ -n "${propid}" ];then
echo "存在进程: ${propid}"
kill -9 ${propid}
echo "杀死进程:${propid}"
else
echo "进程不存在"
fi
# shell脚本的命令最好不要使用别名命令
dirnum=`ls /tmp/ |grep tomcat |wc -l`
if [ ${dirnum} -gt 0 ];then
echo "存在${dirnum}个tomcat目录"
cd /tmp
ls |grep tomcat |xargs rm -fr
echo "删除tomcat*目录"
else
echo "不存在tomcat目录"
fi
if [ -d "/data/git clone下的工程目录" ];then
echo "存在并进入目录:/data/git clone下的工程目录"
cd /data/git clone下的工程目录
else
echo "目录不存在,不必创建,只需要在/data/目录下git clone git地址"
fi
# 进入木查看当前git分支,如果不是要pull的分支,则重新拉取,也可以使用命令直接切换需要的分支
# read -p
git pull > /data/git.log
if [ $? -eq 0 ];then
echo "进入目标目录mvn构建项目"
cd "工程目录"
mvn clean package -Dmaven.test.skip=true
echo "打包完成"
else
echo "代码为最新"
fi
if [ -f "/data/项目路径target下的xxx.jar" ];then
echo "jar文件存在,进入目标目录启动应用"
cd 直接进入存在的target目录下
nohup java -jar xxx.jar >/data/logsserver.log 2>&1 &
pidnum=`ps -aux|grep 项目jar名 |grep -v grep |awk '{print $2}'`
echo "启动进程为:${pidnum}"
else
echo "执行mvn package,可能打包失败,jar文件不存在"
fi
上一篇: 记录一次迁移环境 .env 出现的问题
下一篇: 记一次vue项目打包发布过程