Docker运维笔记三:IDEA使用Docker插件远程部署SpringBoot

Docker运维笔记三:IDEA使用Docker插件远程部署SpringBoot,第1张

找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示

查看端口是否开启,如下图所示:

配置好后页面下方会出现Docker工具栏(如IDEA没有点击view-Tool Windows可调出来)

命令解释:

过程:先pull基础镜像,然后再打包镜像,并将镜像部署到远程docker运行

可以访问到接口

如果是下图,HoastIP不填,其映射结果为 0.0.0.0:8081->8081/tcp ,此时宿主机的8081端口开启,需要这样访问 http://192.168.197.90:8081/api/member/get/113

如果是下图,HoastIP填127.0.0.1,其映射结果为 127.0.0.1:8081->8081/tcp ,此时宿主机的8081端口未对外开放,访问 http://192.168.197.90/api/member/get/113 ,会被nginx反向代理到 http://127.0.0.1:8081/api/member/get/113 ,即可访问接口API

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class]: Invocation of init method failednested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Caused by: java.net.NoRouteToHostException: Host is unreachable (Host unreachable)

解决:打开服务器3306端口

昨天整一个idea远程部署,搞得头破血流的,整理一下,免得下次受苦。

在tomcat安装目录/bin/catalina.sh 脚本中添加一下命令,注意双引号之间是传递给JVM的参数,一个-D就是一个KV设置,保险起见每行后面留个空格,因为不知道换行符会不会生效。

用以下命令运行tomcat,不要用startup脚本

菜单栏Tools->Deployment->Configure->左上角+按钮:

输入部署的别名,比如Test,点击OK

按照上图的说明填写对应的资料。

如果是ubuntu系统,SFTP协议是默认启用的,账号密码和SSH登录的一样是主机用户,填完点击Test SFTP connection测试一下。这里踩了一坑,还自己搭FTP服务器,慢的要死。

菜单栏Run->Edit Configurations->左上角+按钮->Tomcat Server->remote:

按照图中的说明填写对应的资料,Tomcat Server Settings中的设置,就使用前面的deploy设置即可。

这里的Application Server设置也踩了一坑,因为是部署到远端的tomcat,我以为是要填写或者映射到服务器tomcat的路径,差点就搭一个smb服务出来。实际上这里是要本机的tomcat环境,用来解决项目编译依赖的,选择你本机安装的tomcat目录即可。

tomcat运行起来之后,默认是在8080端口,但是访问云主机,是无法打开测试页面的,这是因为云主机的防火墙拦截了,要手动打开你需要的端口。

除了8080以外,还有jdwp端口,rmi等你需要的端口都要打开,不用再关掉。出连接错误了,就看看是不是防火墙设置问题。

我买的是阿里云主机,其他的大概也一样。云主机有一个随机的id和一个固定的内部ip,它是通过/etc/hosts来配置的。在云主机上部署tomcat不知道为啥要去解析id对应的主机,如果解析失败就无法启动。如果报这个错误,用以下命令恢复主机映射即可。

ip地址是你云主机的内部地址,iZXXXZ是报错的主机id。就是这玩意折腾了我半宿,最后找阿里云客服给的解决方案。

配置完后使用run直接部署服务或者debug,在本地的虚拟机上是可以的,但是在云主机上,就回报java rmi 连接超时,查看防火墙的端口1099是开放的,换Idea的rmi端口也不行。

这个没找到解决办法,只能在部署、调试的时候把tcp端口都打开,完事再关掉了。如果是正式上线,就想办法手动拷贝吧。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/636438.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-19
下一篇2023-07-19

发表评论

登录后才能评论

评论列表(0条)

    保存