使用 Docker Compose 部署 MySQL
本文将详细指导如何使用 docker-compose
部署 MySQL,包括基本配置、启动步骤、数据持久化以及一些高级选项。通过容器化部署 MySQL,你可以快速搭建一个隔离的数据库环境,适用于开发、测试或小型生产场景。
关键要点
- 使用
docker-compose
部署 MySQL 需要创建一个docker-compose.yml
文件,设置 MySQL 镜像、端口映射、环境变量和数据持久化。 - 需要安装 Docker Engine、Docker Compose 和 MySQL 客户端。
- 数据通过命名卷持久化,方便管理和备份。
- 令人惊讶的是,你可以自动创建数据库和用户,只需在文件中添加额外的环境变量。
准备工作
在开始之前,请确保已安装以下工具:
这些工具是部署的基础,确保你的环境已准备就绪。
创建和启动 MySQL
dockercomposeyml__29">1. 创建 docker-compose.yml
文件
创建一个名为 docker-compose.yml
的文件,内容如下:
version: '3.9'
services:
mysql:
image: mysql:8.0
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: MYPASSWORD
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
说明:
version: '3.9'
:指定 Docker Compose 文件格式版本。
image: mysql:8.0
:使用 MySQL 8.0 官方镜像。
restart: always
:容器在失败时自动重启。
ports: "3306:3306"
:将主机端口 3306 映射到容器内的 3306 端口。
environment
:设置 MySQL 根密码(将 MYPASSWORD 替换为你的实际密码)。
volumes
:使用命名卷 mysql_data 挂载到 /var/lib/mysql,实现数据持久化。
2.可选:自动创建数据库和用户
如果需要自动创建数据库和用户,可以在 environment 中添加以下内容:
environment:
- MYSQL_ROOT_PASSWORD=MYPASSWORD
- MYSQL_DATABASE=mydb
- MYSQL_USER=myuser
- MYSQL_PASSWORD=myuserpassword
说明:
MYSQL_DATABASE
:创建名为 mydb 的数据库。
MYSQL_USER
:创建用户 myuser。
MYSQL_PASSWORD
:设置用户密码为 myuserpassword。
将上述值替换为你的实际需求,这一功能非常适合快速初始化。
3.启动服务
在 docker-compose.yml 文件所在目录,打开终端并运行:
docker compose up -d
-d
参数表示在后台运行,容器启动后不会阻塞终端。
首次运行可能需要下载 MySQL 镜像,请耐心等待。
4. 验证和连接
检查容器状态:
docker compose ps
输出应显示 mysql
服务状态为 Up
,表示运行正常。
连接 MySQL,使用 MySQL 客户端:
mysql -h localhost -u root -p
输入之前设置的密码(如 MYPASSWORD
),成功连接后即可看到 MySQL 提示符。
5. 停止和清理
使用完成后,运行以下命令停止并移除容器:
docker compose down
这会停止并删除容器、网络和卷,但数据仍保存在 mysql_data
卷中,除非手动清理。
注意事项
数据持久化
:mysql_data
卷确保数据在容器删除后仍可访问,建议定期备份。
安全性
:暴露 3306 端口可能存在风险,生产环境建议使用防火墙或 Docker 网络隔离。
调试
:
查看日志:
docker logs mysql
进入容器
docker exec -it mysql bash
结论
通过 docker-compose 部署 MySQL 是一种高效、灵活的方式,适合快速搭建开发或测试环境。本文提供了从基础配置到高级选项的完整指南,包括数据持久化、自动初始化和故障排查方法。你可以根据实际需求调整配置,例如更改端口、密码或添加初始化脚本。