初次體驗Docker的坑
最近在做微信小程式,後臺用的Springboot。以前一直放在伺服器的Tomcat裡跑。
感覺不爽,想試下“風靡全球”的Docker來跑一跑。
參考了這位老哥教程:https://blog.csdn.net/caox_nazi/article/details/78366584
沒想到遇到很多阻力。
1、首先在我的Centos7(雲伺服器)上安裝Docker -CE
在配置加速器的時候遇到了坑,配置檔案少了個符號 命令:sudo vim /etc/docker/daemon.json
坑:
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
注:一定要配置加速器,不然pull速度(如下圖)
配置了加速器。嘻嘻
配置加速器教程:https://blog.csdn.net/u013372487/article/details/77169430
2、安裝完畢。
輸入docker info
有點東西 ,美滋滋
3、打包本地springboot專案
。。。(按照教程裡走)
噹噹噹。。。。坑來了,我嫌教程裡jar包名字不好看 ,自己取了個符合自己氣質的jar包名,哈哈。然而Dockerfile裡什麼都沒改
完了 出毛病了
4、執行docker打包命令 sudo docker build -t docker .(這裡有個點)
完了完了
跳出來一個找不到 docker_spring_boot.jar 的錯誤。原本沒看到,就屁顛屁顛去釋出去了。
釋出也是用的教程裡的-的-d(後臺執行)命令。(docker run -d -p 8080:8080 docker)
結果錯誤也沒報,釋出沒成功。本地遠端都訪問不了 localhost:8080
找了半天,終於發現是Dockerfile問題。於是乎改成和jar包符合。(我的jar包名:bzmovie-docker.jar)
OK.大功告成。
5、釋出應用。
最後一個坑。
命令:docker run -d -p 8080:8080 bzmovie
執行此命令,發現還是訪問不了。改成9090:9090 ,8081:8081....
還是不行,又找半天,找到釋出docker應用的日誌,發現tomcat啟動在80埠。又想到了docker的埠對映機制:
**************************************************************
將容器指定埠指定對映到宿主機的一個埠上。
1 |
|
以上指令會將容器的80埠對映到宿主機的8000埠上。
***************************************************************
冷靜分析了一下。
(1)假如我想用我的ip:8080 這樣訪問
則我應該這樣釋出
docker run -d -p 8080:80 bzmovie(前面是springboot中tomcat的釋出埠。後面我想能訪問的埠。並且能同時在多個埠釋出同一個應用)
(2)如果我想直接ip訪問,即ip:80,命令應該這樣
docker run -d -p 8080:80 bzmovie
檢視docker程序。果不其然。
至此網站已經能正常訪問。本人小菜鳥一枚。啥都沒準備就直接把Docker拿過來想開箱即用,遇到了不少坑。在此記錄一下,避免下次遇到,同時和大家共勉!嘻嘻