一、Docker遠(yuǎn)程DEBUG
Dockerfile文件內(nèi)容
FROM openjdk:8-jdk-alpine
MAINTAINER timor
RUN echo "Asia/Shanghai" > /etc/timezone
VOLUME /tmp
ADD eureka-1.0.jar app.jar
EXPOSE 8761 9999
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999","app.jar"]
ENTRYPOINT 這行命令必須在同一行
創(chuàng)建鏡像
docker build -t timor/eureka:v1 .
運(yùn)行鏡像
docker run -d --name eureka -p 8761:8761 -p 9999:9999 --restart=always eureka:v1
二、jar包部署遠(yuǎn)程DEBUG
nohup java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9082 -jar springboot.jar &>/dev/null &
遠(yuǎn)程調(diào)試
image.png
三腿宰、啟動(dòng)腳本
1脏榆、建議將腳本上傳到和jar同目錄
2、給腳本權(quán)限
chmod 777 restart.sh
3欲险、vim 打開(kāi)腳本查看fileformat類型
輸入set ff 如果是fileformat=dos
在底部模式下镐依, 執(zhí)行:set fileformat=unix后執(zhí)行:x或者:wq保存修改
:set ff
restart.sh 腳本 Usage: sh 執(zhí)行腳本.sh [start|stop|restart|status]
#!/bin/bash
#這里可替換為你自己的執(zhí)行程序,其他代碼無(wú)需更改
APP_NAME=xxx.jar
cd `dirname $0`
#使用說(shuō)明天试,用來(lái)提示輸入?yún)?shù)
usage() {
echo "Usage: sh 執(zhí)行腳本.sh [start|stop|restart|status]"
exit 1
}
#檢查程序是否在運(yùn)行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1槐壳,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#啟動(dòng)方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9082 -jar $APP_NAME &>/dev/null &
echo "${APP_NAME} is start success"
#tail -f fileserver-web.out
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
echo "${APP_NAME} is stoped"
else
echo "${APP_NAME} is not running"
fi
}
#輸出運(yùn)行狀態(tài)
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重啟
restart(){
stop
start
}
#根據(jù)輸入?yún)?shù),選擇執(zhí)行對(duì)應(yīng)方法喜每,不輸入則執(zhí)行使用說(shuō)明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac