Liubsyy / HotSecondsIDEA

HotSeconds是一款Java远程热部署的插件,可实现秒级一键化热更新。插件分为HotSecondsClient(IDEA热部署插件)和HotSecondsServer(服务端javaagent热更新插件),可以热更新java和常用配置文件,也支持常用框架(Spring,MyBatis)的热更新,相对传统部署可节省大量时间提高开发效率。
GNU General Public License v2.0
369 stars 48 forks source link

docker容器内会连接失败 #53

Closed lazysnake closed 9 months ago

lazysnake commented 9 months ago

如果使用nodeport方式暴露端口会报以下错误 微信图片_20231122090715 如果使用route路由,则能连接但是在热部署时会抛出异常 微信图片_20231122095937

lazysnake commented 9 months ago

内网环境,原谅我的门锁图片

lazysnake commented 9 months ago

HotSeconds版本是future3 Client是1.5.5,服务端是启动了的,端口也是通的

Liubsyy commented 9 months ago

第一种方式,本地->远程直连ip+端口测试过是通的对吧,远程服务器ip是10.128.9.130,配置文件hot-seconds.xml里面配的也是这个ip对吧,最后在服务器上hostname -i查看的ip也是这个,这三个都是一致的么?

lazysnake commented 9 months ago

第一种方式,本地->远程直连ip+端口测试过是通的对吧,远程服务器ip是10.128.9.130,配置文件hot-seconds.xml里面配的也是这个ip对吧,最后在服务器上hostname -i查看的ip也是这个,这三个都是一致的么?

这个ip 10.128.9.130 是容器内的ip,外面是无法访问的,配置的是宿主机的ip

lazysnake commented 9 months ago

nodeport方式是可以正常进行远程调试的

Liubsyy commented 9 months ago

现在是从远程获取注册服务是没问题的,但是获取到的服务是10.128.9.130:容器端口,但是你本地和容器ip是不通的所以无法通信,所以直接在server端添加jvm参数: -Djava.rmi.server.hostname=宿主机ip应该就行了,你可以试试,不过这样的话宿主机端口和映射容器端口得相同

lazysnake commented 9 months ago

现在是从远程获取注册服务是没问题的,但是获取到的服务是10.128.9.130:容器端口,但是你本地和容器ip是不通的所以无法通信,所以直接在server端添加jvm参数: -Djava.rmi.server.hostname=宿主机ip应该就行了,你可以试试,不过这样的话宿主机端口和映射容器端口得相同

这样改完后,就和route模式一样了,热部署timeout

Liubsyy commented 9 months ago

现在是从远程获取注册服务是没问题的,但是获取到的服务是10.128.9.130:容器端口,但是你本地和容器ip是不通的所以无法通信,所以直接在server端添加jvm参数: -Djava.rmi.server.hostname=宿主机ip应该就行了,你可以试试,不过这样的话宿主机端口和映射容器端口得相同

这样改完后,就和route模式一样了,热部署timeout

宿主机和docker端口都是一致的么?按这张方式的超时异常,点一下show balloon,把全部的异常发一下看看

lazysnake commented 9 months ago

现在是从远程获取注册服务是没问题的,但是获取到的服务是10.128.9.130:容器端口,但是你本地和容器ip是不通的所以无法通信,所以直接在server端添加jvm参数: -Djava.rmi.server.hostname=宿主机ip应该就行了,你可以试试,不过这样的话宿主机端口和映射容器端口得相同

这样改完后,就和route模式一样了,热部署timeout

宿主机和docker端口都是一致的么?按这张方式的超时异常,点一下show balloon,把全部的异常发一下看看

是一样的 微信图片_20231122131007

lazysnake commented 9 months ago

刚刚又重新试了下,发现已经OK了,服务端提示 HotDeployService热部署服务启动成功 不代表已就绪?

lazysnake commented 9 months ago

远程编译并热部署此文件会出现以下异常 7fed31c88d85229b6bf369626d64abf 本地编译是没问题的

Liubsyy commented 9 months ago

远程编译并热部署此文件会出现以下异常 7fed31c88d85229b6bf369626d64abf 本地编译是没问题的

远程是jdk还是jre启动的,看看JAVA_HOME/lib目录下是不是有tools.jar,有这个服务器才能支持运行时编译

lazysnake commented 9 months ago

远程编译并热部署此文件会出现以下异常 7fed31c88d85229b6bf369626d64abf 本地编译是没问题的

远程是jdk还是jre启动的,看看JAVA_HOME/lib目录下是不是有tools.jar,有这个服务器才能支持运行时编译

确实没有这个,一些类似properties的配置文件能支持热部署吗?

Liubsyy commented 9 months ago

可以的,不过得自己写刷新逻辑, https://github.com/Liubsyy/HotSecondsIDEA/wiki/HotSeconds%E6%89%80%E6%9C%89%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D#27-%E6%8F%92%E4%BB%B6%E6%89%A9%E5%B1%95

lazysnake commented 9 months ago

可以的,不过得自己写刷新逻辑, https://github.com/Liubsyy/HotSecondsIDEA/wiki/HotSeconds%E6%89%80%E6%9C%89%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D#27-%E6%8F%92%E4%BB%B6%E6%89%A9%E5%B1%95

好的,非常感谢