头像
小白丶
-- : -- : --

🐳 使用 Docker 快速部署 MySQL 5.7(附配置挂载)

最后更新于:

🧱 一、前提条件

在开始之前,请确保你的环境中已安装:

  • Docker 👉 安装教程
  • Docker Compose 👉 推荐使用 v1.x 或 v2.x

📦 准备好了吗?走你~


🗂️ 二、目录结构(超重要!)

先在项目根目录创建以下文件夹结构:

1
2.
3├── docker-compose.yml
4└── mysql
5├── conf     # 👉 配置文件挂载目录
6├── data     # 👉 数据库数据持久化
7└── logs     # 👉 数据库日志

你可以提前创建这些目录:

1mkdir -p mysql/{conf,data,logs}

💡 注意: 如果你想初始化数据库表结构,可以创建一个 db 目录用于挂载 *.sql 文件(文章后面会提)。


⚙️ 三、docker-compose.yml 配置

下面是完整的配置内容,直接复制粘贴即可用:

 1version: '3'
 2services:
 3  mysql:
 4    container_name: mysql 
 5    restart: always
 6    image: mysql:5.7
 7    ports:
 8      - "3306:3306"
 9    volumes:
10      # 配置文件(可选)
11      - ./mysql/conf:/etc/mysql/conf.d
12      # 日志
13      - ./mysql/logs:/logs
14      # 数据
15      - ./mysql/data:/var/lib/mysql
16    command: [
17      'mysqld',
18      '--innodb-buffer-pool-size=80M',
19      '--character-set-server=utf8mb4',
20      '--collation-server=utf8mb4_unicode_ci',
21      '--default-time-zone=+8:00',
22      '--lower-case-table-names=1'
23    ]
24    environment:
25      MYSQL_ROOT_PASSWORD: 123456 🚨 # 强烈建议改成安全密码

📌 配置说明:

配置项说明
volumes挂载本地目录实现数据持久化,避免容器重启后丢数据 💾
command自定义 MySQL 启动参数,例如字符集、时区等 🧠
environment设置 root 密码。部署完后可以用这个密码连接 🗝️

🧾 四、my.cnf 通用配置文件

请将以下内容保存为 ./mysql/conf/my.cnf,Docker 会自动加载:

 1[mysqld]
 2# 端口号
 3port = 3306
 4
 5# 数据目录
 6datadir = /var/lib/mysql
 7
 8# 错误日志
 9log-error = /logs/mysql-error.log
10
11# 慢查询日志
12slow_query_log = 1
13slow_query_log_file = /logs/mysql-slow.log
14long_query_time = 2
15
16# 启用 general 日志(调试时开启)
17# general_log = 1
18# general_log_file = /logs/mysql-general.log
19
20# 连接相关
21max_connections = 200
22max_connect_errors = 6000
23wait_timeout = 28800
24interactive_timeout = 28800
25
26# 字符集与排序规则
27character-set-server = utf8mb4
28collation-server = utf8mb4_unicode_ci
29
30# 时区
31default-time-zone = '+8:00'
32
33# lower_case_table_names 设置(1 表示不区分大小写)
34lower_case_table_names = 1
35
36# InnoDB 相关设置
37innodb_buffer_pool_size = 128M
38innodb_log_file_size = 64M
39innodb_flush_log_at_trx_commit = 1
40innodb_file_per_table = 1
41
42# 启动 binlog(二进制日志,支持主从)
43# log-bin = mysql-bin
44# server-id = 1
45# expire_logs_days = 7

📁 my.cnf 路径:./mysql/conf/my.cnf 📝 Docker 会自动读取这个配置,覆盖默认值。


🚀 五、启动服务

docker-compose.yml 所在目录执行:

1docker-compose up -d

🎉 看到 mysql 启动成功就大功告成!

可以通过以下命令进入容器测试:

1docker exec -it mysql bash
2mysql -uroot -p123456

📚 六、扩展:如何初始化数据库结构?

如果你有一个初始化 SQL 文件,想在容器启动时执行,只需添加一行挂载:

1volumes:
2  - ./mysql/db:/docker-entrypoint-initdb.d

💡 把你的 init.sql 放到 ./mysql/db/ 目录下,第一次启动容器时就会自动导入 👏


🧹 七、日志在哪看?

日志都挂载在 ./mysql/logs 目录,方便排查问题 💡

你也可以进入容器用命令查看:

1docker logs mysql

✅ 八、总结

📝 本文介绍了如何使用 Docker Compose 快速部署 MySQL 5.7,并实现配置、数据、日志的本地挂载。附带通用配置 my.cnf,开箱即用!

📎 配置可选项丰富,轻松应对开发 & 测试场景 🔐 建议上线时注意密码、数据安全 😎 表情包教程更轻松(你说是不是)


🤔 有问题?

欢迎评论区留言交流,或者来杯 ☕ 边喝边聊~

1
2---
3
4需要我把这篇文章打包为 `.md` 文件下载也可以告诉我!
最新文章