该文全是干货,不拖泥带水,springboot部署脚本下边已经列出。 本文涵盖了springBoot jar包的备份和重启,启动后会检测springboot是否成功启动 建议springboot开放一个不需要登录的健康检测接口,也可以引入springBoot自带的健康状态检测的依赖包 我这里是自己写了一个开放的接口,在接口中测试了redis和mysql服务是否正常,如果正常,我则认为系统是重启成功了 http://localhost:$PORT/check/health //我的测试接口,返回内容是200表示一切正常,返回数字1表示数据库异常,返回数字2表示redis异常
#根据你springBoot的环境
sh deploy.sh dev
#!/bin/bash
ENV=$1
NEW_VERSION_PATH="/Users/camel/Desktop/build/new-version/office.jar"
RUNNING_VERSION_PATH="/Users/camel/Desktop/build/office.jar"
BAK_DIR="$(dirname $RUNNING_VERSION_PATH)/bak"
PID=$(pgrep -f "$RUNNING_VERSION_PATH")
if [ -z "$ENV" ]; then
echo "Please provide an environment argument (e.g. dev or prod)"
exit 1
elif [ "$ENV" != "dev" ] && [ "$ENV" != "prod" ]; then
echo "Invalid environment argument. Must be 'dev' or 'prod'"
exit 1
elif [ "$ENV" = "dev" ]; then
PORT=8234
elif [ "$ENV" = "prod" ]; then
PORT=8165
fi
if [ ! -d "$BAK_DIR" ]; then
echo "Creating backup directory: $BAK_DIR"
mkdir "$BAK_DIR"
fi
if [ -z "$PID" ]; then
echo "Running version is not currently running. Skipping stop."
else
echo "Stopping running version with PID $PID"
kill "$PID"
sleep 3
fi
if [ ! -f "$NEW_VERSION_PATH" ]; then
echo "New version not found. Starting running version."
else
echo "Backing up running version to $BAK_DIR"
mv "$RUNNING_VERSION_PATH" "$BAK_DIR/$(basename $RUNNING_VERSION_PATH).$(date +%Y-%m-%d-%H-%M-%S)"
echo "Copying new version to $RUNNING_VERSION_PATH"
cp "$NEW_VERSION_PATH" "$RUNNING_VERSION_PATH"
fi
echo "Starting new version"
nohup java -jar "$RUNNING_VERSION_PATH" --spring.profiles.active="$ENV" >/dev/null 2>&1 &
echo "Starting the application,the port is $PORT, please wait..."
retry=0
while [[ $retry -lt 15 ]]; do
if pgrep -f "$RUNNING_VERSION_PATH" > /dev/null ; then
status=$(curl -s http://localhost:$PORT/check/health)
echo "status: $status"
if [[ "$status" == 200 ]]; then
echo "Deployment successful"
exit 0
break
elif [[ "$status" == 1 ]]; then
echo "Deployment failed: database error"
exit 1
elif [[ "$status" == 2 ]]; then
echo "Deployment failed: Redis error"
exit 1
fi
fi
echo "Checking Spring Boot health...";
sleep 2
retry=$((retry+1))
done
echo "Deployment failed: timeout"
exit 1