1. 程式人生 > 其它 >打造專屬測試平臺5-使用Docker部署MySQL資料庫

打造專屬測試平臺5-使用Docker部署MySQL資料庫

Docker容器之間能夠相互連線,利用這一特性,我們可以把資料庫與應用本身分離開來,比如Django應用放在一個容器內,而MySQL資料庫放在另外一個容器內。本文將介紹如何在Docker容器中部署MySQL資料庫,且被Django所在的容器呼叫。

Step1:拉取MySQL基礎映象

docker pull mysql:5.7

Step2:新建Docker網路

兩個容器在同一個Docker網路下,就可以通過網路通訊了。使用以下命令建立了一個名為docker-net的網路。

docker network create -d bridge docker-net

Step3:執行MySQL基礎映象,並且連線上新建的網路

docker run --name mysql -d --network docker-net --network-alias mysql -p 3307:3306 -v E:\mysql_data\conf:/etc/mysql/conf.d -v E:\mysql_data\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 --lower_case_table_names=1

引數解釋:

  • --network docker-net:連線上docker-net網路
  • --network-alias mysql:在網路上給容器起別名為mysql,方便其他容器呼叫,別名即為該容器的IP地址
  • -p 3307:3306:將容器的3306埠對映到宿主機的3307埠,方便在宿主機上操作資料庫,比如備份和還原資料庫
  • -v E:\mysql_data\data:/var/lib/mysql:將容器內的資料檔案掛載到宿主機下,用於資料持久化
  • -e MYSQL_ROOT_PASSWORD=123456:設定MySQL的root使用者密碼為123456
  • --lower_case_table_names=1:識別資料庫表名不區分大小寫(不同於Windows系統,Linux系統下資料庫表名是嚴格區分大小寫的)

這裡額外提一點,為什麼需要資料持久化?如果不進行資料持久化,Docker容器被刪除後,資料就隨之消失了。而通過掛載的方式將容器內的資料儲存到宿主機,下次執行容器時,該資料依舊可用。

Step4:修改Django的設定檔案,執行Django容器並連線上MySQL容器所在的網路

修改Django內的settings.py檔案,將連線資料庫時的HOST修改為MySQL容器的網路別名,比如例子中的mysql。

docker run --name django -d --network docker-net -p 9999:5000 django

作者:酌三巡

感謝閱讀,如需轉載請註明出處!