• 打造专属测试平台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_dataconf:/etc/mysql/conf.d -v E:mysql_datadata:/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_datadata:/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

    作者:酌三巡

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

  • 相关阅读:
    《java.util.concurrent 包源码阅读》10 线程池系列之AbstractExecutorService
    《java.util.concurrent 包源码阅读》09 线程池系列之介绍篇
    《java.util.concurrent 包源码阅读》08 CopyOnWriteArrayList和CopyOnWriteArraySet
    《java.util.concurrent 包源码阅读》07 LinkedBlockingQueue
    《java.util.concurrent 包源码阅读》06 ArrayBlockingQueue
    《java.util.concurrent 包源码阅读》05 BlockingQueue
    NewBluePill源码学习 <一>
    深入理解Windows X64调试
    x64 结构体系下的内存寻址
    Windows PAE 寻址
  • 原文地址:https://www.cnblogs.com/zhuosanxun/p/15458603.html
Copyright © 2020-2023  润新知