docker部署mysql數據庫,部署項目到數據庫

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或者容器名稱

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章