Java Python项目部署自动化脚本

一、JAVA项目

1.打包成jar包普通部署

#!/bin/bash
JACOCO_OPTS="-javaagent:/data/server/jacoco/lib/jacocoagent.jar=includes=*,output=tcpserver,port=53556,address=0.0.0.0"
#单个jar包的启动
#parameters:${SERVICE_PATH},${SERVICE_NAME},${SERVICE_PORT},${PACKAGE_NAME}
#SERVICE_PATH="/data/server/dcs"
#SERVICE_NAME="ai-rasp-rest"
#SERVICE_PORT="8081"
#PACKAGE_NAME="ai-rasp-rest.jar"
CURR_DIR=$(pwd)

#停服务
echo "SERVER_NAME:${SERVICE_NAME}"
isServerExist=$(ps -ef |grep ${PACKAGE_NAME} |grep -v grep |awk '{print $2}'|wc -l)

if [ "$isServerExist" = "0" ]; then
    echo "${SERVICE_NAME} 进程不存在!"     
elif [ "$isServerExist" -ge 1 ]; then 
     echo "Start stop ${SERVICE_NAME}" 
     kill -9 `ps -ef |grep ${PACKAGE_NAME} |grep -v grep |awk '{print $2}'`
     sleep 3s
fi

#部署方法
deploy() {
     if [ -d $SERVICE_PATH ];then
        echo "开始执行备份操作"
          fileName_dir=${SERVICE_NAME}.${APP_VERSION}.${APP_BUILDNUMBER}.$(date +%Y%m%d%H%M%S)
        
        if [ ! -d /data/AD/backup/$fileName_dir ];then
            mkdir -p /data/AD/backup/$fileName_dir
        fi
        
        if [ -d  $SERVICE_PATH/${PACKAGE_NAME} ];then
               mv  $SERVICE_PATH/${PACKAGE_NAME}  /data/AD/backup/$fileName_dir
            #备份目录转成自定义参数的形式
        fi 
     fi
    
     cd $CURR_DIR
     pwd
     echo "开始解压版本包"
    cp -r  ${PACKAGE_NAME}  ${SERVICE_PATH}
    sleep 10s
    cd ${SERVICE_PATH}
     echo  "开始执行启动脚本,请等待!"
     sleep 2
     nohup java -jar ${PACKAGE_NAME} -Xms1g -Xmx1g -Xmn512m -XX:MaxNewSize=512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m > ./log 2>&1 & echo $! > project.pid
    sleep 100
    isServerExist=$(netstat -nutl|grep ${SERVICE_PORT}|grep -v "grep"|wc -l)
    if [ "$isServerExist" == "1" ]; then 
        echo "${SERVICE_NAME} 服务启动成功!"
    else 
          echo "${SERVICE_NAME} 服务启动失败!" 
        exit 1
     fi
    
    ls -lrt  ${SERVICE_PATH}
    ps -eo pid,lstart,etime,cmd |grep ${SERVICE_NAME}
}

#清理目标部署目录
echo "判断目标目录是否存在"
if [ ! ${SERVICE_PATH} ];then
     echo "SERVICE_PATH 此参数未设置,请检查!"
    exit 1
elif [ -f ${SERVICE_PATH} ];then
     echo "SERVICE_PATH 是一个文件!"
    exit 1
elif [ ! -d ${SERVICE_PATH} ];then
     echo "部署目标目录不存在,初次部署,创建目录"
     mkdir -p ${SERVICE_PATH}
     pwd
     deploy
else
     deploy
fi

2.打包成jar包docker方式部署

#!/bin/bash

fileName_dir=${APP_VERSION}.${APP_BUILDNUMBER}.$(date +%Y%m%d%H%M%S)
        
if [ ! -d /data/AD/backup/${fileName_dir} ];then
    mkdir -p /data/AD/backup/ai-area-schedule/${fileName_dir}
fi

docker stop `docker ps -aq --filter name=aiedu-area-source-schedule`
mv /data/server/area/schedule/ai-area-schedule.jar  /data/AD/backup/ai-area-schedule/${fileName_dir}

cp ai-area-schedule.jar /data/server/area/schedule
docker rm    `docker ps -aq --filter name=aiedu-area-source-schedule`
#docker run -m 8G --name aiedu-area-source-schedule --storage-opt size=120G -v /data/server:/data/server -v /data/server/area:/data/server/area -v /etc/localtime:/etc/localtime:ro $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') -p 8081:8081 -itd    aiedu-area-source-schedule:1.0
docker run -m 16G --name aiedu-area-source-schedule -v /data/server:/data/server -v /etc/localtime:/etc/localtime:ro $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}')   -p 8081:8081 -itd aiedu-area-source-schedule:1.0

3.打包成war包docker方式部署

#!/bin/bash

fileName_dir=${APP_VERSION}.${APP_BUILDNUMBER}.$(date +%Y%m%d%H%M%S)
        
if [ ! -d /data/AD/backup/${fileName_dir} ];then
    mkdir -p /data/AD/backup/coep-train/${fileName_dir}
fi


if [ -d /data/server/coep-train.war ];then
	mv /data/server/coep-train.war  /data/AD/backup/coep-train/${fileName_dir}
fi

cp coep-train.war /data/server/

docker restart aiedu-coep-train

二、python项目
1.python项目docker部署

#!/bin/bash

fileName_dir=${APP_VERSION}.${APP_BUILDNUMBER}.$(date +%Y%m%d%H%M%S)
        
if [ ! -d /data/AD/backup/${PROJECT_NAME}/${fileName_dir} ];then
    mkdir -p /data/AD/backup/${PROJECT_NAME}/${fileName_dir}
fi

if [ -d /data/server/exp/${PROJECT_NAME} ];then
	mv /data/server/exp/${PROJECT_NAME}  /data/AD/backup/${PROJECT_NAME}/${fileName_dir}
fi

cp ${PROJECT_NAME}.zip /data/server/exp/
unzip -o /data/server/exp/${PROJECT_NAME}.zip -d /data/server/exp/${PROJECT_NAME}/

echo ${env}
if [ ${env} == 'test' ];then
	echo '当前部署环境为测试环境,更换配置为TestConfig'
	sed -i -r "s/'env'\s*:\s*(\w*)/'env': TestConfig/" /data/server/exp/${PROJECT_NAME}/config.py
fi

docker restart aiedu-exp-b3

2.python项目docker部署(删除容器,再启动容器)

#!/bin/bash

fileName_dir=${APP_VERSION}.${APP_BUILDNUMBER}.$(date +%Y%m%d%H%M%S)
        
if [ ! -d /data/AD/backup/AI-AUDIO/${fileName_dir} ];then
    mkdir -p /data/AD/backup/AI-AUDIO/${fileName_dir}
fi

if [ -d /data/server/exp/AI-AUDIO ];then
	mv /data/server/exp/AI-AUDIO  /data/AD/backup/AI-AUDIO/${fileName_dir}
fi

cp AI-AUDIO.zip /data/server/exp/
unzip -o /data/server/exp/AI-AUDIO.zip -d /data/server/exp/AI-AUDIO/
echo ${env}
if [ ${env} == 'test' ];then
	echo '当前部署环境为测试环境,更换配置为TestConfig'
	sed -i -r "s/'env'\s*:\s*(\w*)/'env': TestConfig/" /data/server/exp/AI-AUDIO/config.py
fi

docker stop `docker ps -aq --filter name=aiedu-exp-b1`
docker rm `docker ps -aq --filter name=aiedu-exp-b1`
#docker run -m 4G --name aiedu-exp-b1  -v /data/server/env/exp-audio:/opt/exp-audio/venv -v /data/server/exp/AI-AUDIO:/data/server/exp/AI-AUDIO  -v /data/server/env/exp-dl:/opt/exp-dl/venv -v /data/server/exp/AI-DL:/data/server/exp/AI-DL -v /etc/localtime:/etc/localtime:ro -p 5007:5007 -p 5008:5008 -itd aiedu-exp-b1:1.0
docker run -m 16G --cpus 6 --name aiedu-exp-b1  -v /data/server/env/exp-audio:/opt/exp-audio/venv -v /data/server/exp/AI-AUDIO:/data/server/exp/AI-AUDIO  -v /data/server/env/exp-dl:/opt/exp-dl/venv -v /data/server/exp/AI-DL:/data/server/exp/AI-DL -v /etc/localtime:/etc/localtime:ro $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') -p 5007:5007 -p 5008:5008 -itd aiedu-exp-b1:1.0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值