当前位置: 首页 > news >正文

Docker Compose 部署 MySQL 5.7(生产级实践方案)

前言:

使用docker compose 详细部署mysql5.7版本数据库详细步骤

环境:Linux Server + Docker + Docker Compose
MySQL 版本:5.7.44
适用场景:测试 / 生产 / 学习 / 云服务器


一、为什么选择 MySQL 5.7?

虽然 MySQL 8.0 已经成为主流,但在大量存量系统中

  • MySQL 5.7 依然是事实标准
  • 很多老项目 / 中间件 / ORM 对 5.7 更友好
  • 对稳定性要求高的系统仍大量使用 5.7

因此,掌握一套稳定、规范的 MySQL 5.7 Docker 部署方案仍然非常有价值


二、部署目标

本次部署目标如下:

  • 使用Docker Compose
  • MySQL 版本5.7
  • 使用相对路径 ./ 进行目录挂载
  • 数据、日志、配置全部可持久化
  • 配置方式符合官方镜像推荐
  • 可长期运行,适合生产环境

三、目录结构设计(非常重要)

在服务器上创建如下目录结构:

mysql5.7/ ├── docker-compose.yml ├── data/ # MySQL 数据目录 ├── log/ # MySQL 日志目录 └── config/ └── my.cnf # 自定义配置文件

创建目录:

mkdir-p mysql5.7/{data,log,config}cdmysql5.7

如果希望自定义docker网络的话,可以运行:

docker network create sql_default

计划使用默认的话,就删除下面内容中的关于networks配置的即可:

networks:-sql_default networks:sql_default:external:true

四、docker-compose.yml(最终推荐版)

services:mysql:image:mysql:5.7container_name:mysql57restart:alwaysports:-"13306:3306"environment:TZ:Asia/ShanghaiMYSQL_ROOT_PASSWORD:admin123456volumes:-./data:/var/lib/mysql-./log:/var/log/mysql-./config:/etc/mysql/conf.d-/etc/localtime:/etc/localtime:rocommand:["--character-set-server=utf8mb4","--collation-server=utf8mb4_unicode_ci"]networks:-sql_defaultnetworks:sql_default:external:true

说明几点关键设计:

  1. 不再使用version:字段
    Docker Compose v2 已废弃该字段,避免启动警告

  2. 配置目录挂载到/etc/mysql/conf.d
    不覆盖官方默认配置,更安全、规范

  3. 使用 utf8mb4 作为默认字符集


五、MySQL 配置文件(config/my.cnf)

[mysqld] port=3306 user=mysql server-id=1 default-storage-engine=INNODB # 字符集 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake # 时区 default-time-zone='+8:00' # 连接数 max_connections=500 max_connect_errors=1000 # InnoDB innodb_buffer_pool_size=512M innodb_log_file_size=256M innodb_file_per_table=1 innodb_flush_log_at_trx_commit=1 # 日志 log-error=/var/log/mysql/error.log slow_query_log=1 slow_query_log_file=/var/log/mysql/slow.log long_query_time=2 # SQL 模式(5.7 推荐) sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4

如果服务器内存 ≥ 8G,可适当调大innodb_buffer_pool_size


六、启动 MySQL 容器

dockercompose up -d

首次启动会自动初始化数据库文件。


七、验证 MySQL 是否启动成功

查看日志:

dockerlogs mysql57

看到如下关键日志,说明初始化成功:

MySQL init process done. Ready for start up.

八、连接 MySQL 验证

方式一:宿主机连接

mysql -h127.0.0.1 -P13306-u root -p

方式二:容器内连接(推荐)

dockerexec-it mysql57 mysql -uroot -p

输入密码:

admin123456

能正常进入即表示部署完成。


九、常见问题说明

1️⃣ 时区 Warning 是否需要处理?

Warning: Unable to load '/usr/share/zoneinfo/...'

这是MySQL 官方镜像的常见警告,对业务无实质影响。

如需彻底消除,可额外挂载:

-/usr/share/zoneinfo:/usr/share/zoneinfo:ro

2️⃣ data 目录能否删除?

  • ❌ 生产环境严禁随意删除
  • ✅ 仅在明确需要重建数据库时才删除

十、总结

✔ 本方案适用于Linux 服务器
✔ 目录结构清晰、可维护
✔ 符合 MySQL 官方 Docker 镜像设计
✔ 可直接用于生产或教学
✔ 后续可扩展主从、备份、迁移


http://www.jsqmd.com/news/290461/

相关文章:

  • 提示工程架构师揭秘:电商系统中Prompt的缓存优化方法
  • MinIO文件对象存储使用(C#)
  • 前端小白别慌:搞懂CSS块状元素,页面布局不再翻车(附避坑指南)
  • 9D电影设备多少钱一套?如何提升5D体验馆的吸引力?
  • 9D影院设备厂家是什么?7D影院设备多少钱?
  • Java毕设选题推荐:基于springboot的猫咖宠物咖啡平台管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设项目:基于springboot的宠物咖啡平台管理系统(源码+文档,讲解、调试运行,定制等)
  • 计算机Java毕设实战-基于springboot的猫猫主题宠物咖啡平台管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 【毕业设计】基于springboot的宠物咖啡平台管理系统(源码+文档+远程调试,全bao定制等)
  • TCP reliable / UDP unreliable hoax
  • mysql57下载地址
  • LoRA微调-挑战(1)-数据质量
  • 完整教程:Alluxio正式登陆Oracle云市场,为AI工作负载提供TB级吞吐量与亚毫秒级延迟
  • Cesium进阶教程:Shader与三维GIS可视化实战
  • Trae AI零基础编程入门:纯小白也能快速上手
  • java研发工程师必知必会
  • 【笔记】【底层逻辑1】
  • 静态 Top Tree
  • 【笔记】【周期】
  • typescript-类的访问权限public、private、protected
  • 【笔记】【逆向思维:顶级大脑的降维思考智慧】
  • 工信部擘画“开源新基建”:推动工业互联网平台生态跃迁
  • ASTM D4169-23e1测试,ASTM D4169标准模拟,包装运输测试ASTM D4169试验
  • 【课程设计/毕业设计】基于SpringBoot的医院医疗护工陪护系统的设计与实现基于springboot的护工管理便捷服务系统【附源码、数据库、万字文档】
  • 中国AI模型的“双向涟漪”——从全球南方自主到美企的市场转向
  • SRM+AI智能寻源:10分钟搞定供应商寻源!
  • Java计算机毕设之基于Springboot的医疗护理管理服务系统(完整前后端代码+说明文档+LW,调试定制等)
  • 强烈安利8个AI论文网站,本科生搞定毕业论文不求人!
  • firebird 数据库 C# 开发报错
  • 企业邮箱收费吗?解析主流品牌的三种收费模式