公司现在用阿里云服务器部署有关于Springboot的javaweb项目,于是做个记录,有关于如何进行远程调试。
idea配置不再多说,配置到内网或者外网IP进行IP和端口号设定,根据JDK版本有相关设置提示。
下来主要讲述一下有关于docker的tomcat,如何去进行和本地idea进行链接。
首先要确定的是配置docker tomcat的容器的时候不仅仅需要进行web访问内外端口的暴露(例如8080:8080),还需要进行JVM虚拟机访问的端口暴露,下来我们以实际操作举例。
首先docker ps查看一下tomcat具体运行方式
我们可以看出来是由Catalina.sh进行运行的,所以说我们需要进行对Catalina.sh进行更改
具体思路讲完,下来进行实践代码步骤。
1.创建容器规则
首先创建容器,根据自己linux内部的tomcat版本进行创建,其中不仅仅要暴露外部8080端口,还需要暴露JVM调试端口5005(5005可以随便写,具体看心情)
docker run --name tomcat -d -p 8091:8080 -p 5005:5005 tomcat:9.0.30-jdk8-adoptopenjdk-hotspot
用多个-p暴露端口,此时端口暴露成功。
2.修改tomcat内部Catalina.sh文件
无需进入容器内部,直接使用docker cp 命令
docker cp 容器ID:/usr/local/tomcat/bin/catalina.sh /root/tomcat/
后面的/root/tomcat/目录任意指定,此时用Xftp打开记事本编辑此Catalina.sh文件,ctrl+f搜索OS specific support关键字,在这行关键字的上一行,去添加如下内容
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,suspend=n,server=y"
具体位置写好了,随后自行导入war包和更改过的Catalina文件后restart容器进行调试即可
如果报错记得用docker logs 容器ID查看报错原因,很多情况是位置加错了,报语法错误
idea连接出现以下代表成功
记得war包的代码和本地的一定要一样,不然会报空,还有就是只是本地代码进行调试,和sql无关,数据读取正常是根据linux服务器上的sql读取