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
原文地址:https://www.cnblogs.com/magicpose/p/11851375.html