从Docker衔接到导入黑马商城以及前端登录显示用户或密码错误的相关总结(个人理解,仅供参考)

发布于:2025-08-04 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

一、前言

二、从Docker衔接到导入黑马点评

三、谈谈端口映射及我的前端登录显示用户或密码错误

四、总结


一、前言

在学习24黑马SpringCloud课程时,说实话Docker那一块再到导入黑马商城是真的有点折磨,个人感觉老师水平还是很强的,但是在有的部分衔接上是真的有点随意。反正我现在这个时间点学习这个课程,明显感觉到这个Docker前置的课程应该是后续补上去的。然后在Docker衔接到导入黑马商城这一块我遇到了不少的问题,好在我都慢慢自行解决了(也确实在解决问题的过程中对虚拟机和Docker有了更深的理解),本博客主要用于自己梳理总结(如果你是完全跟老师保持一致可能不会想我一样遇到这么多问题)

二、从Docker衔接到导入黑马点评

这里谈谈我个人的梳理理解:在Docker学习部分,我们学习了把本地的idea项目打包上传到docker并build然后创建运行hm容器,还有含hmall数据库的mysql部署以及nginx在docker的部署。这三个的文件只要在虚拟机root目录下不删除文件就不会消失,创建运行停止删除容器都是单纯针对容器进行操作的,所以如果发现某个容器创建时的语句配置不对或者和视频不一致,大胆的去删除容器重新创建即可。前面的一个个部署的学习主要是为了熟悉docker,后面使用docker compose可以实现一键部署,在Docker视频的最后docker compose down就删除了这三个容器

回想在学习Docker的时候,hm、mysql、nginx三个容器创建并运行,所以访问前端是192.168.100.128:18080(前面是自己的虚拟机ip地址)。而现在衔接到导入黑马商城是运行idea项目,nginx是自己放到非中文目录的本地磁盘下,但是mysql由于idea里面yaml的配置使用的还是docker里面的mysql。所以由于前面docker compose down就删除了这三个容器,现在只需要把mysql在docker上重新创建并运行,这一块衔接建议直接看文档来操作(这里老师又搞个hm-net的通用网络,建议和老师保持一致,然后之前还有一个heima的通用网络建议删除省的搞混,docker network ls可以查看所有网络,docker network rm heima可以删除这个网络)

所以后续老师查看前端的网址就不是虚拟机的ip地址加18080,而是localhost:18080了(启动idea项目,保证docker的mysql容器创建并运行,nginx本地磁盘非中文目录然后启动)

三、谈谈端口映射及我的前端登录显示用户或密码错误

端口映射这一块是属于我个人的理解与总结,大家可以看看,但是我水平一般可能理解也有问题。在创建并运行mysql容器的时候,我从头到尾都没有按照老师给出的3306:3306的端口映射来。而是我一直都按3307:3306的来。因为在学习过程中都有使用图形化界面连接数据库的测试部分,我之前在虚拟机上部署了一个mysql并且在datagrip上连接并把它命名为Linux-MySQL,填写的连接地址是192.168.100.128:3306,并且我之前黑马点评的数据库都是使用这个Linux-MySQL的

如果这里我还是按照老师的3306:3306那我能不能在datagrip上连接到呢,我拷打ai想知道结果(因为按照老师这样来那我Docker-MySQL和Linux-MySQL的连接地址不一模一样了)

下图是ai给出的回答,所以为了避免出现其他问题我就按照自己的想法全程都是把映射改成3307:3306

结果就因为这个端口映射让我在学习过程中饱受折磨,还好我能一个一个处理到遇到的问题(心态差点崩了),说来的好处就是让我加深了对端口映射的理解。

下面是我在Docker部署hm、mysql、nginx时,浏览器访问数据库不显示数据的问题。简单总结来说就是我在打包idea项目时把application.yaml中的url地址改成了3307(原本是3306),我自以为这样是对的,后续发现由于项目容器和mysql容器在同一个docker网络时可以直接通信,无需依赖端口映射,所以上传到虚拟机的jar包里面的application.yaml的url地址就应该保持3306

24SpringCloud黑马商城部署Java应用后浏览器访问数据库不显示数据的解决办法-CSDN博客

结果好玩的事情发生了,这次访问前端页面是启动本地idea项目,本地nginx,docker的mysql,我前端登录会显示用户或密码错误,我尝试半天解决了。问题还是这个端口映射的地方,因为之前在前一个docker网络可以直接通信,但是这里mysql是在docker,而本地idea项目的application.yaml如果url是3306又连不到docker的mysql了(感觉可能会有点绕,主要是记录我自己印象深刻的梳理理解,大家看看就好),我把3306改成3307就解决了(这里补充一嘴我尝试把local的那个yaml文件的后面数字删掉了,不知道这个操作有没有效果)

四、总结

对于老师docker上的mysql端口映射是3306:3306我个人感觉不太合理(我菜,也不知道我个人理解是否正确)

如果你是和我一样改了端口映射的话,就需要注意我下面的总结:

在项目、mysql、nginx全部在docker的同一网络下运行时,能够直接进行通行,不需要依赖端口映射(确保你打包上传的jar包的application.yaml的url地址是3306)

在项目和nginx本地运行、mysql在docker运行时,需要依赖端口映射(把本地idea项目的application.yaml的url改为你映射的端口,我这里是3307)


网站公告

今日签到

点亮在社区的每一天
去签到