打造专属测试平台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。带上--network docker-net参数运行Django容器即可。

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

 

posted @ 2021-10-26 16:39  酌三巡  阅读(179)  评论(0编辑  收藏  举报