docker部署mysql數據庫
1.從阿里雲加速網站上拉取mysql5.7.22的鏡像
docker pull mysql:5.7.22
注意:當前版本mysql已經更新到8以上,新特性取消了MyISAM引擎(不支持事務),提升InnoDB引擎(支持事務)的速度,速度是5.6的2倍以上,而5.6不支持nosql,所以不要安裝5.6的版本。
2.創建並運行docker容器,很明顯要通過docker run命令實現
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22
-p 宿主機的3306端口對應容器中的3306端口, -v數據卷 -d守護式啓動
3.通過navicat連接容器中的mysql 5.7數據庫
通過ifconfig -a查詢ip地址
這時候,我們通過navicat導入sql文件,會報錯,因爲容器中的mysql配置中沒有設置導入的最大的SQL腳本的大小,即如果是第一次運行該容器,該容器對應的宿主機的數據卷中沒有任何對應的配置,所以應該先不綁定配置文件的數據卷,將配置文件修改後來cp到宿主機對應的數據卷目錄中。
4.修改配置文件
1.刪除舊的容器docker rm -f mysql,
2.刪除配置的數據卷配置,新建新的容器
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22
3.交互式進程進入容器,找到默認配置複製下來
然後進入 /etc/mysql/mysql.conf.d目錄下修改配置文件 mysqld.cnf
輸入命令 echo "max_allowed_packet= 128M" >>mysqld.cnf
使得允許的最大sql文件爲128M。
5.重啓mysql容器
這是可以成功導入sql文件。
問題:這個時候配置文件是在容器中,所以要將文件cp到宿主機中。
6.將配置文件複製到宿主機中。
切換到cd /user/local/docker/mysql/conf/mysql 目錄下
docker cp mysql:/etc/mysql . 複製文件到當前目錄下
mv *.* .. 將所有文件移動到上級目錄下
docker rm -fr mysql 刪除此時已空的文件夾。
7.此時可以使用數據捲來更新配置了,刪除容器,重新run容器。發現可以連接數據庫
部署項目到容器數據庫
將war包添加到宿主機中的一個文件目錄下,作爲數據卷的掛載。
可以使用Xmanager中的Xftp工具複製。
拉取tomcat鏡像,docker pull tomcat
以守護式運行容器,並進行數據卷的掛載,我的war包在/usr/local/javajar/shopplus目錄下面
docker run --name shopplus -p 8080:8080 -v /usr/local/javajar/shopplus:/usr/local/tomcat/webapps -d tomcat
完全開放的防火牆的選項 --privileged=true
常見問題:404錯誤
/usr/local/tomcat/webapps 後面如果不加你的war名稱(即項目名)的時候 ,訪問你的api的時候需要帶上你的項目名稱。
docker logs -f 容器名 一直查看你的日誌信息
連接數據庫的500錯誤
項目中數據庫的配置,你要通過tomcat連接mysql數據庫,使用的ip爲本地局域網中mysql容器中的ip地址。
查看容器ip方法爲 docker inspect 容器id或者容器名稱