Shell脚本自动发布springboot到docker容器中

脚本功能

1)自动替换jar包中的配置文件。

2)自动备份老版本的Jar包

3) 自动判断是初次启动还是更新服务

2. 脚本准备

进入/home目录新建springcloud文件夹,并进入

然后新建文件夹shell、DockerBuilder、Jar、Front

image.png

3. 环境变量配置

vi /etc/profile

在文件末尾追加如下环境变量

export DockerBuilder=/home/springcloud/DockerBuilder
export Jar=/home/springcloud/Jar
export Front=/home/springcloud/Front
export NginxHtml=/usr/springcloud/nginx/html
 
alias shell="cd /home/springcloud/shell"

刷新环境变量使其生效

source /etc/profile

配置全局java环境

1.查看已经安装的JDK
    yum list installed |grep java
  2.卸载CentOS系统Java环境
    yum -y remove java-1.8.0-openjdk*   *表示卸载所有openjdk相关文件输入 
    yum -y remove tzdata-java.noarch       卸载tzdata-java 
  3.查看yum库中的Java安装包
    yum -y list java*
  3.安装
  yum install java-1.8.0-openjdk*
  4.查看java版本
   java -version
  5.执行java,javac命令显示帮助信息则安装成功
  6.执行javac 报错:javac: command not found 解决方案:
  yum install java-1.8.0-openjdk-devel.x86_64

配置全局node环境

Nodejs官方版本

#安装源
curl -sL https://rpm.nodesource.com/setup_13.x | bash -
#安装Nodejs
yum -y install nodejs
#配置淘宝镜像
npm config set registry http://registry.npm.taobao.org/
#安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
#安装yarn
npm install yarn -g
#配置yarn淘宝镜像
yarn config set registry https://registry.npm.taobao.org -g
yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g
#检查yarn
yarn config get registry // https://registry.npm.taobao.org
yarn config get sass_binary_site // http://cdn.npm.taobao.org/dist/node-sass
 
 

4. 启动脚本

shell && sh test.sh

5. 微服务脚本

#!/bin/bash
#auth eric
#date 2021-08-13
#*********脚本入参#*********
appname=${0%\.*}
#Docker脚本位置
dockersrc=$DockerBuilder/$appname
#需要替换的包名称
bmc=$appname-server-web-1.0.jar
#需要替换的文件名称
file1=bootstrap.properties
file2=application.properties
#*********脚本入参#*********
#当前镜像版本
source /etc/profile
version="`date +%Y%m%d%H%M%S`"
echo '第一步:备份老版本'
if [ ! -d "$Jar/backup" ]; then
  echo "备份文件夹不存在,自动创建中";
  mkdir $Jar/backup;
fi
if [ -f "$dockersrc/$bmc" ];then
  echo "旧版本存在,自动备份中"
  mv $dockersrc/$bmc $Jar/backup/$bmc.$version
fi
echo '第二步:替换JAR包配置文件'
#找到替换文件路径
if [ ! -f  "$Jar/$bmc" ];then
  echo  "$Jar/$bmc更新包不存在"
  exit 1;
fi
#清除上一次的残余
cd $dockersrc
sudo rm -rf *.tar *.jar
cp $Jar/$bmc $dockersrc
filesrc1=`jar -tvf \$bmc|grep \$file1|awk '{print \$NF}'`
filesrc2=`jar -tvf \$bmc|grep \$file2|awk '{print \$NF}'`
if [ $? != 0 ]; then
    echo "java命令不存在,请安装JDK"
    exit 1;
fi
if [ -f "$dockersrc/$file1" ]; then
  echo '替换bootstrap配置文件'
  jar -xvf $bmc $filesrc1
  #删掉原文件
  sudo rm -f $filesrc1
  #换掉文件
  cp $file1 $filesrc1
  #重新将文件加入到jar包中
  jar -uvf $bmc $filesrc1
fi
if [ -f "$dockersrc/$file2" ]; then
  echo '替换application配置文件'
  jar -xvf $bmc $filesrc2
  #删掉原文件
  sudo rm -f $filesrc2
  #换掉文件
  cp $file2 $filesrc2
  #重新将文件加入到jar包中
  jar -uvf $bmc $filesrc2
fi
#删除解压文件
sudo rm -rf BOOT-INF
sudo rm -f *.tmp
echo '替换完成'
echo '第三步:查看是否有容器'
cd $dockersrc
imageresult=$(docker ps |grep  $appname | wc -l)
if [ $imageresult -eq 0 ]; 
then
  echo "不存在容器,需要初始化容器";
  docker build -t zhhq-$appname .
  if [ $? != 0 ]; 
  then
     echo "docker构建失败,请检查Docker" && exit 1
  fi
  if [[ "$appname" == "manager" ]]; 
  then
    echo "发布管理端后台"
    docker run -d --network host --name zhhq-$appname -p 7001:7001 --restart always zhhq-$appname
  elif [[ "$appname" == "user" ]];
  then
    echo "发布用户端后台"
    docker run -d --network host --name zhhq-$appname -p 7011:7011 --restart always zhhq-$appname
  else
    echo "发布$appname服务"
    docker run -d --name zhhq-$appname --restart always zhhq-$appname
  fi
  if [ $? -eq 0 ];
  then
    echo "$appname发布成功!"  && exit 0
  else
    echo -e '\033[31m[ error ]$appname 发布失败 \033[0m' && exit 1
  fi
  if [ $? -eq 0 ];
  then
    echo "$appname发布成功!"
  else
    echo -e '\033[31m[ error ]$appname 发布失败 \033[0m' && exit 1
  fi
else
  echo "已经存在容器,需要更新容器";
  conid=$(docker ps |grep  $appname |awk '{print $1}')
  docker cp $Jar/$appname-server-web-1.0.jar $conid:/$appname-server-web-1.0.jar
  docker restart $conid
  if [ $? -eq 0 ]; 
  then
    echo "发布成功!"
  else 
    echo -e '\033[31m[ error ] 发布失败 \033[0m' && exit 1
  fi
fi
 

6. 前端脚本

#!/bin/bash
#auth eric
#date 2021-08-13
#*********脚本入参#*********
bmc=smartapp
#*********脚本入参#*********
version="`date +%Y%m%d%H%M%S`"
echo '第一步:备份老版本'
if [ ! -d "$Front/backup" ]; then
  echo "备份文件夹不存在,自动创建中";
  mkdir $Front/backup;
fi
if [ ! -d "$Front/$bmc" ];then
  echo '更新包不存在请检查' && exit 1
else
  echo "准备更新$appname"
fi
if [ -f "$NginxHtml/$bmc" ];then
  echo "旧版本存在,自动备份中"
  mv $NginxHtml/$bmc $Front/backup/$bmc.$version
fi
mv $Front/$bmc $NginxHtml/
echo "发布成功!"

shell获取指定日期的nginx日志

进入nginx的日志目录

2. 执行shell命令

sed -n '/10\/Sep\/2021/','/12\/Sep\/2021/p' /usr/local/nginx/logs/access.log > log.txt

3. notepad正则过滤文本

删除X之后的所有字符用:X.*$

删除X之前的所有字符用:^([^s]*)X

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杭州架构师

你的鼓励你创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值