使用 docker-compose 搭建 MySQL 5.7
1. 创建 docker-compose.yml 文件
在工作目录下(例如 /volume1/docker/mysql
),创建一个 docker-compose.yml
文件,内容如下:
version: '3.8' # 指定 docker-compose 文件版本
services:
mysql:
image: mysql:5.7 # 使用 MySQL 5.7 镜像
container_name: mysql-container # 容器名称
environment:
MYSQL_ROOT_PASSWORD: 520vonch # 设置 root 密码
ports:
- "3306:3306" # 映射端口
volumes:
- /volume1/docker/mysql/data:/var/lib/mysql # 数据目录
- /volume1/docker/mysql/logs:/var/log/mysql # 日志目录
- /volume1/docker/mysql/conf:/etc/mysql/conf.d # 配置文件目录
restart: unless-stopped # 容器自动重启策略,除非手动停止
- 参数说明:
image
: 指定 MySQL 5.7 镜像。container_name
: 设置容器名称为mysql-container
。environment
: 设置环境变量,定义 root 密码。ports
: 映射宿主机的 3306 端口到容器的 3306 端口。volumes
: 挂载数据、日志和配置目录,与之前的-v
参数一致。restart
: 确保容器在崩溃或重启后自动恢复。
2. 清理旧的镜像和数据(可选)
如果需要清理旧的环境,可以手动执行以下命令(与之前一致):
docker rmi 5568fddd4f66 5107333e08a8 # 删除旧的 MySQL 镜像
rm -rf /volume1/docker/mysql/data # 删除旧数据目录
rm -rf /volume1/docker/mysql/logs # 删除旧日志目录
rm -rf /volume1/docker/mysql/conf # 删除旧配置目录
3. 创建必要的目录结构
确保挂载目录存在:
mkdir -p /volume1/docker/mysql/data
mkdir -p /volume1/docker/mysql/logs
mkdir -p /volume1/docker/mysql/conf
4. 启动 MySQL 容器
在包含 docker-compose.yml
的目录下,运行以下命令:
docker-compose up -d
-d
: 后台运行,等同于docker run
中的-d
。- 如果本地没有
mysql:5.7
镜像,Docker 会自动从 Docker Hub 下载。
5. 验证容器运行状态
检查容器是否正常运行:
docker-compose ps
- 输出类似于
docker ps
,显示mysql-container
正在运行,端口映射为0.0.0.0:3306->3306/tcp
。
6. 连接 MySQL 并测试
- 方式 1:在宿主机连接:
mysql -h 127.0.0.1 -u root -p520vonch
- 方式 2:在容器内连接:
docker exec -it mysql-container mysql -uroot -p520vonch
- 成功进入 MySQL 命令行界面。
7. 查看日志
检查容器日志以排查问题:
docker-compose logs mysql
mysql
是docker-compose.yml
中定义的服务名称。
8. 停止和删除容器
-
停止服务:
如果只是想暂时停止 MySQL 服务但保留容器和数据,可以运行:docker-compose stop
- 再次启动使用:
docker-compose start
- 再次启动使用:
-
停止并删除容器:
如果需要停止并删除容器(保留数据卷),运行:docker-compose down
-
停止并删除容器及数据卷:
如果需要彻底清理,包括删除挂载的数据卷(即删除数据库数据),运行:docker-compose down -v
- 注意:
-v
参数会删除docker-compose.yml
中定义的卷(如/volume1/docker/mysql/data
),执行前请确认是否需要备份数据。
- 注意:
-
删除镜像(可选):
如果还想删除 MySQL 镜像,进一步释放空间,可以在down
后运行:docker rmi mysql:5.7