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
    
  • 相关阅读:
    iSCSI又称为IPSAN
    文档类型定义DTD
    HDU 2971 Tower
    HDU 1588 Gauss Fibonacci
    URAL 1005 Stone Pile
    URAL 1003 Parity
    URAL 1002 Phone Numbers
    URAL 1007 Code Words
    HDU 3306 Another kind of Fibonacci
    FZU 1683 纪念SlingShot
  • 原文地址:https://www.cnblogs.com/magicpose/p/11851375.html
Copyright © 2011-2022 走看看