热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

打造专属测试平台5使用Docker部署MySQL数据库

Docker容器之间能够相互连接,利用这一特性,我们可以把数据库与应用本身分离开来,比如Django应用放在一个容器内,而MySQL数据库放在另外一个容器内。本文将介绍如何在Doc

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

 

作者:酌三巡

感谢阅读,如需转载请注明出处!



推荐阅读
author-avatar
北京家圆医院999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有