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