下面给出一份“开箱即用”的 Docker-Compose 模板,可在一分钟内拉起 MySQL 8.0,并附带:
- 数据持久化
- 自定义 my.cnf(字符集、时区、慢日志等)
- 自定义网络,方便后续让其他服务(SQLREST、SpringBoot…)直接通过服务名 mysql8 访问
- 健康检查
- 可选的 phpMyAdmin 可视化管理
一、目录结构(推荐)
mysql-docker/
├── docker-compose.yml
├── conf.d/
│ └── my.cnf
└── data/ # 第一次会自动生成
二、docker-compose.yml
version: "3.9"
services:
mysql8:
image: mysql:8.0
container_name: mysql8
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root123456 # root 密码
MYSQL_DATABASE: demo_db # 初始化库
MYSQL_USER: dev_user # 普通用户
MYSQL_PASSWORD: dev_pass # 普通用户密码
volumes:
- ./data:/var/lib/mysql # 数据持久化
- ./conf.d:/etc/mysql/conf.d # 自定义配置
networks:
- mysql_net
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 3
# 可选:phpMyAdmin
pma:
image: phpmyadmin/phpmyadmin
container_name: pma
restart: always
ports:
- "8080:80"
environment:
PMA_HOST: mysql8
PMA_PORT: 3306
PMA_USER: root
PMA_PASSWORD: root123456
depends_on:
- mysql8
networks:
- mysql_net
networks:
mysql_net:
driver: bridge
三、自定义配置 conf.d/my.cnf(示例)
复制
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default_authentication_plugin = mysql_native_password
log_error = /var/lib/mysql/mysql-error.log
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/mysql-slow.log
long_query_time = 2
[client]
default-character-set = utf8mb4
四、启动 & 验证
1.启动
docker compose up -d # 后台运行
2.查看状态
docker compose ps
docker logs mysql8 # 首次初始化稍等 10-20s
3.测试本地连接
docker exec -it mysql8 mysql -uroot -proot123456
4.远程连接
- Host:宿主机 IP
- Port:3306
- 账号密码:见 environment 段
5.浏览器访问
http://宿主机IP:8080
用 root / root123456 登录即可

五、维护命令
| 关闭并删除容器 | `docker compose down` |
| 仅停服务 | `docker compose stop` |
| 数据完全清空 | `docker compose down -v`(**会清空 ./data**) |
| 查看实时日志 | `docker compose logs -f` |
| 备份数据库 | `docker exec mysql8 mysqldump -uroot -proot123456 –all-databases > all.sql` |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...


