前言
有的时候,有一些业务在本地跑的好好的,打包部署到线上就出问题,这个时候远程debug就有效了
大致流程是这样的:
搭建
1.准备基本代码
一个简单的web api
2.配置IDEA远程调试
和普通的debug不同,这里需要配置一下
记住这行指令:
3.部署
不管是容器部署,还是直接jdk部署,部署的时候加上一条命令:
java -XDebug 上面的第二步的命令 -jar demo
我这里是用容器部署的
Dockerfile
FROM azul/zulu-openjdk-debian:11-jre
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8889","-jar","/app.jar"]
deploy.sh
docker kill demo
docker rm demo
docker rmi demo
docker build -t demo .
docker run -d -p 8080:8080 --name demo demo
docker images| grep none | awk '{print $3}' | xargs docker rmi # 清理无用镜像
debug
注意这里的第一行,有监听端口的信息展现
可以看到成功的debug了
注意点
Q:调试时其他人会不会卡住?
自己在远程调试的时候,别人访问的话也会卡住,这就会造成请求堆积,非常恐怖
并且写这篇博客的时候就有朋友和我说这个远程调试的话,端口暴露容易被小黑子们拉去当矿机,所以测试完成之后建议就把端口保护起来
部署的时候用到docker和nginx的话会有其他注意点,这里做测试就没这么严谨