关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

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

发布时间:2023-06-27 14:00:19

1. 脚本功能

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

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

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

2. 脚本准备

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

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

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 "发布成功!"

   



/template/Home/leiyu/PC/Static