部署在k8s或者docker中的java程序如何通过IDEA进行调试
1、暴露调试端口代码在通过dockerfile进行镜像打包时需要在dockerfile中定义好要暴露的调试端口EXPOSE 5005ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","/demojenkins.jar"]2、docker或者k8s中启动java
一、暴露调试端口
代码在通过dockerfile进行镜像打包时需要在dockerfile中定义好要暴露的调试端口
EXPOSE 5005
ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005","/demojenkins.jar"]
二、docker或者k8s中启动容器
1、docker
docker run -d -p 5005:5005 -p 8111:8111 java-demo-01:latest -t
注意: 如果通过docker命令在启动容器的时候没有在命令中暴露5005端口,只是dockerfile中定义暴露了5005端口,那么查看容器状态PORTS将会呈如下显示
这种只能说明对于Linux宿主机而言,容器的5005端口暴露出来了,Linux宿主机是能连上的,但是对于外部机器而言这个端口是无法访问的。所以在使用docker命令启动容器时一定要将5005端口暴露给外部机器
2、k8s
对于k8s而言则需要使用NodePort方式将5005端口暴露给外部机器
kubectl expose deployment javademo1 -n ceshi --name=debug --port=5005 --target-port=5005 --type=NodePort
也可以采用在kuboard图形化界面上修改容器信息,增加暴露端口
暴露后查看service会查到相应的NodePort形式的端口
三、远程调试
通过IDEA连接暴露出来的调试端口进行远程调试
1、配置远程调试
配置好之后,在代码上打上断点,切换到remote配置,点击debug按钮开始调试
出现“已连接到目标 VM, 地址: ‘‘10.10.10.41:31096’,传输: ‘套接字’’”字样,表示IDEA已经连接到远程JVM调试端口,可以触发代码进行调试了
当代码触发后,会停在打上断点的地方,可以进行逐步调试,查看变量等操作
更多推荐
所有评论(0)