一、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