热门标签 | 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

 

作者:酌三巡

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



推荐阅读
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • Django新手指南:第三步——构建你的首个项目
    在本教程中,我们将引导你完成创建第一个Django应用的步骤。通过实际操作,你将逐步了解Django框架的核心概念和基本功能。从项目结构到视图和模板的实现,我们将详细介绍每个环节,帮助你快速上手并构建出一个功能完整的Web应用。 ... [详细]
  • 本文深入分析了Django框架中模型应用与非模型应用的区别与应用场景,详细对比了两者在数据处理、性能表现及开发灵活性等方面的特点。同时,文章还介绍了如何在视图函数中有效利用这些特性,结合PostgreSQL、MySQL、SQLite3和Oracle等不同数据库的配置与使用方法,为开发者提供了全面的参考指南。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • Spring Boot与Redis的高效集成方案
    本文探讨了Spring Boot与Redis的高效集成方法,详细介绍了如何在Spring Boot项目中配置和使用Redis,以提升应用性能和数据处理能力。同时,文章还涉及了Go语言社区的相关资源,为Golang开发者提供了宝贵的技术交流平台。 ... [详细]
  • 一键将应用部署至远程服务器,体验超乎想象的便捷与高效
    该插件作为IDEA的内置功能,用户可以直接启用,无需额外安装。通过简单的配置,即可实现应用的一键部署至远程服务器,极大地提升了开发效率和便捷性。插件支持镜像管理和容器管理,允许用户与容器进行交互,并且兼容Docker Compose,适用于复杂的多容器应用部署。总结部分详细介绍了插件的使用方法和优势,附带的参考资料和项目源码地址为用户提供更多学习和实践资源。 ... [详细]
  • 优化Django应用中的MySQL连接池配置方法
    django设置mysql连接池 导库 pipinstalldjango-db-connection-poolsettings.py设置 将ENGINEdjango.db.back ... [详细]
  • SpringBoot非官方教程|终章:文章汇总springboot非官方教程,可能最接近于官方的一个教程,大多数案例都来自于官方文档,为了更好的理解,加入了个人的改造。码云下载:htt ... [详细]
  • 如何在Linux系统中利用crontab定时执行Shell脚本任务?
    在Linux系统中,如何实现定时执行任务脚本?在服务器日常运维过程中,经常需要定期执行某些任务,例如数据库备份、日志文件切割等。通过使用crontab工具,可以轻松配置这些周期性任务,确保它们按时自动运行,提高系统管理效率和可靠性。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 在第六章中,我们将深入探讨MySQL中的多表查询技术,包括联结查询和子查询。联结查询通过将两个或多个表进行连接,基于连接条件生成结果集。常见的联结类型有内联结、外联结和全外联结。交叉联结(CROSS JOIN)虽然使用较少,但其原理是生成所有可能的组合,类似于笛卡尔积的概念。此外,子查询则是在一个查询语句中嵌套另一个查询,用于获取更复杂的数据集。本章将通过实例详细讲解这些查询方法的应用和优化技巧。 ... [详细]
  • 如何在Oracle ASM_Diskgroup中重命名现有磁盘
    如何在Oracle ASM_Diskgroup中重命名现有磁盘 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 如何运用蒙特卡洛方法计算NPV:计算机专业毕业设计遇到难题怎么办?
    许多计算机科学专业的学生在大学期间都会遇到这样的困扰:课堂上教授的内容往往偏向理论,实际应用的知识点讲解得较为浅显和概括,导致在进行毕业设计时,如运用蒙特卡洛方法计算净现值(NPV)等复杂问题时感到无从下手。本文旨在探讨如何通过深入理解和实践蒙特卡洛模拟技术,解决这类计算难题,为学生的毕业设计提供实用指导。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
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社区 版权所有