zoukankan      html  css  js  c++  java
  • Spring Boot 项目启动管理脚本

    boot app.jar start

    脚本代码startenv.sh

    #!/bin/bash
    
    # 刷新环境变量
    source /etc/profile
    
    # 应用路径
    #APP_HOME=/home/www/apps
    # 应用名称
    APP_NAME=$1
    
    # Shell使用说明,用来提示输入参数
    usage() {
        echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]"
        exit 1
    }
    
    # 检查程序是否在运行
    is_exist(){
            # 获取PID
            PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}')
            # -z "${pid}"判断pid是否存在,如果不存在返回1,存在返回0
            if [ -z "${PID}" ]; then
                    # 如果进程不存在返回1
                    return 1
            else
                    # 进程存在返回0
                    return 0
            fi
    }
    
    # 定义启动程序函数
    start(){
            is_exist
            if [ $? -eq "0" ]; then
                    echo "${APP_NAME} is already running, PID=${PID}"
            else    
                    #nohup java -jar ${APP_NAME} > catalina.out 2>&1 &
                    cd ${APP_NAME%/*} && mkdir -p {logs,cache}
    		if [ -r "startenv.sh" ];then
    			echo "设置启动参数"
    			chmod +x startenv.sh && . ${APP_NAME%/*}/startenv.sh
    			echo $JAVA_OPTS
    		fi
                    
    		#java $JAVA_OPTS -jar ${APP_NAME} &
    		nohup java $JAVA_OPTS -jar ${APP_NAME} > logs/catalina.out 2>&1 &
    		#nohup java $JAVA_OPTS -jar ${APP_NAME} > /dev/null &2>1 &
                    #nohup java $JAVA_OPTS -jar ${APP_NAME} > /dev/null &
    		PID=$(echo $!)
                    echo "${APP_NAME} start success, PID=$!"
    		#exit 0
            fi
    }
    
    # 停止进程函数
    stop(){
            is_exist
            if [ $? -eq "0" ]; then
                    kill -15 ${PID}
                    echo "${APP_NAME} process stop, PID=${PID}"
    		sleep 6
            else   
                    echo "There is not the process of ${APP_NAME}"
            fi
    
    	is_exist
            if [ $? -eq "0" ]; then
                    kill -9 ${PID}
                    echo "${APP_NAME} process is killed, PID=${PID}"
    	else
    		echo "${APP_NAME} process stop success"
    	fi
    }
    
    # 重启进程函数 
    restart(){
            stop
            start
    }
    
    # 查看进程状态
    status(){
            is_exist
            if [ $? -eq "0" ]; then
                    echo "${APP_NAME} is running, PID=${PID}"
            else    
                    echo "There is not the process of ${APP_NAME}"
            fi
    }
    
    case $2 in
    "start")
            start
            ;;
    "stop")
            stop
            ;;
    "restart")
            restart
            ;;
    "status")
           status
            ;;
    	*)
    	usage
    	;;
    esac
    exit 0
    
    

    环境配置文件startenv.sh

    #!/bin/sh
    
    export JAVA_OPTS="-Xnoagent -Dlogs=logs -Dcache=cache -Xloggc:logs/gc.log"
    
    export JAVA_OPTS="$JAVA_OPTS  -Xms1024m -Xmx1024m -server"
    export JAVA_OPTS="$JAVA_OPTS  -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -Djava.security.egd=file:/dev/./urandom"
    # 开启远程调试
    export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=25000"
    

    Docker脚本Dockerfile

    FROM frolvlad/alpine-oraclejdk8:slim
    
    MAINTAINER docker_maven docker_maven@email.com
    
    
    RUN mkdir config logs cache
    
    ARG JAR_FILE
    ADD ${JAR_FILE} app.jar
    
    RUN touch logs/gc.log
    
    #COPY logback.xml config/logback.xml
    
    COPY startenv.sh /startenv.sh
    RUN chmod +x /startenv.sh
    RUN sh /startenv.sh
    
    EXPOSE 18603
    
    #ENTRYPOINT ["/run.sh", "${JAR_FILE}" ]
    ENTRYPOINT ["java","-jar","app.jar"]
    

    docker-compose 脚本

    version : '3'
    services:
      service-my:
        container_name: service-my
        build:
          context: .
          dockerfile: Dockerfile
        ports:
          - "50005:50000"
        restart: always
        environment:
          - TZ=Asia/Shanghai
        networks:
          - net=host
    
  • 相关阅读:
    bootstrap:按钮,下拉菜单
    js:indexOf()方法
    js:object.offsetHeight属性
    css y轴溢出滚动条,x轴溢出显示
    datatables使用方式
    ajax同步与异步的坑
    IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解) (转载)
    无法解析此远程名称: 'www.***.com' 解决办法 请求因 HTTP 状态 417 失败 (转载)
    Windows下安装MongoDB3.6.5 (转载)
    解决内部存储空间紧张,不加载桌面壁纸,桌面壁纸显示
  • 原文地址:https://www.cnblogs.com/magicpose/p/11851375.html
Copyright © 2011-2022 走看看