美文网首页
阿里云云效部署springboot应用

阿里云云效部署springboot应用

作者: 追风还是少年 | 来源:发表于2024-08-07 16:40 被阅读0次
    image.png
    image.png
    image.png
    image.png
    #!/bin/bash
    
    # 修改APP_NAME为云效上的应用名
    APP_NAME=XXXX
    APP_VERSION=0.0.1
    
    
    PROG_NAME=$0
    ACTION=$1
    APP_START_TIMEOUT=200    # 等待应用启动的时间
    APP_PORT=8083          # 应用端口
    HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}/health  # 应用健康检查URL
    APP_HOME=/home/admin/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
    JAR_NAME=${APP_HOME}/target/${APP_NAME}-${APP_VERSION}-SNAPSHOT.jar # jar包的名字
    JAVA_OUT=${APP_HOME}/logs/start.log  #应用的启动日志
    
    # 创建出相关目录
    mkdir -p ${APP_HOME}
    mkdir -p ${APP_HOME}/logs
    usage() {
        echo "Usage: $PROG_NAME {start|stop|restart}"
        exit 2
    }
    
    health_check() {
        exptime=0
        echo "checking ${HEALTH_CHECK_URL}"
        while true
            do
                status_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code}  ${HEALTH_CHECK_URL}`
                if [ "$?" != "0" ]; then
                   echo -n -e "\rapplication not started"
                else
                    echo "code is $status_code"
                    if [ "$status_code" == "200" ];then
                        break
                    fi
                fi
                sleep 1
                ((exptime++))
    
                echo -e "\rWait app to pass health check: $exptime..."
    
                if [ $exptime -gt ${APP_START_TIMEOUT} ]; then
                    echo 'app start failed'
                   exit 1
                fi
            done
        echo "check ${HEALTH_CHECK_URL} success"
    }
    start_application() {
        echo "starting java process"
        nohup java -jar -Dspring.profiles.active=${env} ${JAR_NAME} > ${JAVA_OUT} 2>&1 &
        echo "started java process"
    }
    
    stop_application() {
       checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`
    
       if [[ ! $checkjavapid ]];then
          echo -e "\rno java process"
          return
       fi
    
       echo "stop java process"
       times=60
       for e in $(seq 60)
       do
            sleep 1
            COSTTIME=$(($times - $e ))
            checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`
            if [[ $checkjavapid ]];then
                kill -9 $checkjavapid
                echo -e  "\r        -- stopping java lasts `expr $COSTTIME` seconds."
            else
                echo -e "\rjava process has exited"
                break;
            fi
       done
       echo ""
    }
    start() {
        start_application
        health_check
    }
    stop() {
        stop_application
    }
    case "$ACTION" in
        start)
            start
        ;;
        stop)
            stop
        ;;
        restart)
            stop
            start
        ;;
        *)
            usage
        ;;
    esac
    
    

    相关文章

      网友评论

          本文标题:阿里云云效部署springboot应用

          本文链接:https://www.haomeiwen.com/subject/wwxckjtx.html