docker将项目从本地搬到服务器常见错误
ERROR1: 前端请求地址错误
❌错误征兆
返回的页面只有UI,没有数据
🔍发现方式
打开 F12 观察请求发送地址仍然为本地 127.0.0.1
📖解决办法
在前端封装的http中修改请求地址,也可以将服务器地址用VITE变量抽离
💬吐槽感言
这个问题也是最常见的问题,好在它容易被发现。这是前端最容易出现的问题,但好像前端能出现问题的地方也就只有这里了。
ERROR2: 服务器中端口未暴露
❌错误征兆
502错误,无法访问页面
🔍发现方式
刚开始真的很难发现,后面有经验了就熟悉了
📖解决办法
阿里云服务器中配置安全组
💬吐槽感言
端口暴露真是一大坑啊,先是这里,接下来又是docker里
ERROR3: docker-compose中端口未暴露
❌错误征兆
也是502错误,无法访问页面
🔍发现方式
本人当初发现这个问题是靠着一个一个文件慢慢检查,终于发现
📖解决办法
修改docker-compose.yml的ports配置项
💬吐槽感言
本来以为配置ssl证书没多少事,因为以前就干过这个事,那时候阿里云会帮忙把80和443默认暴露,但是Docker不会啊~明明以成功很快,遇到这个bug没发现半天搞不好,真是高血压
ERROR4: docker网络通信在springboot中未配置
❌错误征兆
mybatis会报错连不上数据库,前端数据也请求不过来
🔍发现方式
看教程,大部分教程都会提到编写docker-compose的时候要注意在springboot中配置这个
📖解决办法
修改 application.yml 的配置,redis改host,mybatis当然也可以直接改url,不过我觉得也抽离一个host变量比较统一
💬吐槽感言
其实docker-compose默认的网络通信功能我挺喜欢的,只要springboot里面简单改一下就可以使用了,我一般喜欢隐藏redis和mysql对外的暴露,让他们在内部通信,只有一开始的时候mysql要写一下数据表
ERROR5: docker image拉取的mysql未初始化
❌错误征兆
mybatis会报错,找不到表,前端也没有数据
🔍发现方式
一般来说在写docker-compose的时候就可以想到了,mysql是作为镜像下载下来的,相当于一个新的mysql,要重新去配置
📖解决办法
本人一般用navicat做表导出导入,这时候记得要在docker里面暴露出mysql向外,还有服务器那边也要暴露端口,双重暴露后就可以在本地连上去修改了,好像也可以在docker里面直接控制吧,这样要写sql语句,本人表示不会
💬吐槽感言
又是端口问题,害人不浅
ERROR6: spring-mail不能使用
❌错误征兆
发不了邮箱验证码
🔍发现方式
放到服务器后想发给朋友用,先看看注册账号有没有问题,结果一看果然有问题
📖解决办法
在 application.yml 中重新配置邮箱,利用465端口发送邮件,记得双重端口暴露,具体操作可以参考其他博客,原因是25端口被阿里云封禁不允许使用
结语
代码bug无穷道,平心静气方可行