"/>

使用 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
  • mysqldocker-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