目錄
一、前言
二、從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)