Docker一键部署MySQL和Redis数据库的实现

 更新时间:2025年06月19日 11:16:31   作者:特立独行的猫a  
MySQL和Redis作为两种广泛使用的数据库系统,本文主要介绍了Docker一键部署MySQL和Redis数据库的实现,确保数据库服务的稳定运行与持久化存储,感兴趣的可以了解一下

一、前言

数据库是现代应用开发中不可或缺的一部分,MySQL和Redis作为两种广泛使用的数据库系统,分别用于关系型数据库和键值存储。本文旨在通过Docker和Docker Compose的方式,提供一个简洁明了的一键部署方案,确保数据库服务的稳定运行与持久化存储。

二、Docker及Docker Compose安装

2.1 Docker安装

Docker安装过程略有不同,根据您的操作系统选择适合的安装方式。以下以Ubuntu为例,简要说明安装步骤:

  • 更新包管理器

    sudo apt-get update
    
  • 安装Docker

    sudo apt-get install -y docker.io
    
  • 启动Docker服务并设置开机自启

    sudo systemctl start docker
    sudo systemctl enable docker
    
  • 验证Docker安装

    sudo docker --version
    

2.2 Docker Compose安装

Docker Compose的安装相对简单,同样以Ubuntu为例:

  • 下载Docker Compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    请根据https://github.com/docker/compose/releases页面上的最新版本调整上述命令中的版本号。

  • 赋予执行权限

    sudo chmod +x /usr/local/bin/docker-compose
    
  • 验证Docker Compose安装

    docker-compose --version
    

三、编写Docker Compose文件

接下来,我们将编写一个docker-compose.yml文件来定义MySQL和Redis的服务,以及它们之间的网络配置和持久化存储设置。

version: "3"

# 声明一个名为 'network' 的网络,配置子网和默认网关
networks:
  network:
    ipam:
      driver: default
      config:
        - subnet: '177.7.0.0/16'

# 定义MySQL和Redis的持久化存储卷
volumes:
  mysql:
  redis:

# 定义服务
services:
  mysql:
    image: mysql:8.0.21
    container_name: gva-mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always
    ports:
      - "13306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 'Aa@6447985' # 设置root用户密码
      MYSQL_DATABASE: 'qmPlus'
      MYSQL_USER: 'gva'
      MYSQL_PASSWORD: 'Aa@6447985'
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "gva", "-pAa@6447985"]
      interval: 10s
      timeout: 5s
      retries: 3
    volumes:
      - mysql:/var/lib/mysql # 将MySQL的data目录挂载到volume上,实现数据持久化
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql # 初始化脚本
    networks:
      network:
        ipv4_address: 177.7.0.13 # 指定MySQL容器的IP地址

  redis:
    image: redis:6.0.6
    container_name: gva-redis
    restart: always
    ports:
      - '16379:6379'
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep PONG || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 3
    volumes:
      - redis:/data # 将Redis的数据目录挂载到volume上,实现数据持久化
    networks:
      network:
        ipv4_address: 177.7.0.14 # 指定Redis容器的IP地址

3.1 配置解释

  • networks: 定义了一个名为network的自定义网络,其中设置了子网范围为177.7.0.0/16。这样可以为MySQL和Redis容器分配固定的IP地址,便于管理和维护。

  • volumes: 为MySQL和Redis分别定义了存储卷mysqlredis,用于保存数据库文件,防止数据丢失。

  • services: 这里定义了两个服务,分别是MySQL和Redis。

    • MySQL:

      • 使用指定版本的MySQL镜像。
      • 通过command字段设置了MySQL的启动参数,包括字符集和排序规则。
      • environment字段设置了MySQL的环境变量,包括初始化数据库、用户名、密码等。
      • healthcheck字段定义了健康检查机制,帮助监控MySQL服务的正常运行状态。
      • volumes字段将MySQL的data目录与volume关联起来,同时挂载了初始化脚本。
      • networks字段将MySQL容器加入到自定义网络,并指定了其IP地址。
    • Redis:

      • 使用指定版本的Redis镜像。
      • healthcheck字段定义了健康检查机制,帮助监控Redis服务的正常运行状态。
      • volumes字段将Redis的数据目录与volume关联起来。
      • networks字段将Redis容器加入到自定义网络,并指定了其IP地址。
  • init.sql: 这是一个初始化脚本,用于在MySQL启动时自动创建数据库qmPlus和用户gva,并授予相应的权限。具体内容如下:

    CREATE DATABASE IF NOT EXISTS qmPlus;
    CREATE USER IF NOT EXISTS 'gva'@'177.7.0.1' IDENTIFIED BY 'Aa@6447985';
    GRANT ALL PRIVILEGES ON qmPlus.* TO 'gva'@'177.7.0.1';
    FLUSH PRIVILEGES;
    

注意:这里创建的用户gva配置允许从177.7.0.1进行连接,这个是容器网络的网关地址。为什么要配置为它?是为了让容器外的宿主机能够通过13306端口连接。

四、启动服务

在编写好docker-compose.yml文件后,即可通过Docker Compose命令来启动服务。

  • 创建并启动容器

    sudo docker-compose -f deploy/docker-compose/docker-compose.yaml up -d
    
    • -d表示以后台模式(detached)运行容器。
  • 检查容器状态

    docker-compose ps
    #进入某个容器
    sudo docker exec -it gva-mysql bash
    #查看容器挂载的卷
     sudo docker volume ls
     #进入容器的卷
     sudo docker run -it --rm -v docker-compose_server:/volume-data --name temp-container busybox
     #查看端口占用情况
     sudo netstat -tulpn | grep :13306
    

    该命令将列出所有由docker-compose.yml文件定义的服务及其状态。

五、停止服务

若需要停止并移除所有由docker-compose.yml文件定义的容器,可以使用以下命令:

docker-compose down
  • 该命令会停止并移除所有服务对应的容器,同时保留volume中的数据,从而达到持久化存储的目的。

六、总结

通过本文,您已经了解了如何利用Docker Compose实现MySQL和Redis的一键部署,包括Docker和Docker Compose的安装、docker-compose.yml文件的编写以及服务的启动与停止。

这种方法不仅简化了数据库服务的配置和管理,还确保了数据的安全性。

到此这篇关于Docker一键部署MySQL和Redis数据库的实现的文章就介绍到这了,更多相关Docker一键部署MySQL和Redis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker搭建nacos1.3.0的实现

    docker搭建nacos1.3.0的实现

    这篇文章主要介绍了docker搭建nacos1.3.0的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Dockerfile及新型容器镜像构建技术详解

    Dockerfile及新型容器镜像构建技术详解

    本文详细介绍了dockerfile以及新型容器镜像构建技术,文章中通过详细的代码示例介绍了dockerfile生成容器镜像器的全过程,感兴趣的小伙伴可以参考一下
    2023-04-04
  • 如何在centos的docker里安装jupyter并开放端口

    如何在centos的docker里安装jupyter并开放端口

    上次有一朋友问小编如何在centos的docker里安装jupyter并开放端口呢?在这就不一一回复大家了,下面小编把我的个人经验分享到脚本之家平台,感兴趣的朋友一起看看吧
    2021-08-08
  • Docke容器分离部署LNMP的实现

    Docke容器分离部署LNMP的实现

    这篇文章主要介绍了Docke容器分离部署LNMP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • windows10下安装docker且使用wsl2安装双系统并构建最小jre镜像和应用镜像

    windows10下安装docker且使用wsl2安装双系统并构建最小jre镜像和应用镜像

    这篇文章主要给大家介绍了windows10下安装docker且使用wsl2安装双系统并构建最小jre镜像和应用镜像的流程步骤,文中有详细的图文介绍,需要的朋友可以参考下
    2023-08-08
  • Dockerfile 指令 ADD 和 COPY介绍

    Dockerfile 指令 ADD 和 COPY介绍

    ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件 拷贝到镜像中,COPY指令和ADD指令功能和使用方式类似。只是COPY指令不会做自动解压工作。本文给大家介绍的非常详细,需要的朋友参考下
    2017-03-03
  • Docker部署UI自动化测试环境的实现步骤

    Docker部署UI自动化测试环境的实现步骤

    本文主要介绍了Docker部署UI自动化测试环境的实现步骤,通过Docker可以快速创建、部署和测试脚本,提高测试效率,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • docker 数据目录迁移的两种实现方法

    docker 数据目录迁移的两种实现方法

    本文主要介绍了docker 数据目录迁移的两种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Docker Machine深入详解

    Docker Machine深入详解

    这篇文章主要介绍了Docker Machine深入详解,文章总结的很详细,有感兴趣的同学可以研究下
    2021-03-03
  • Docker镜像压缩与优化操作

    Docker镜像压缩与优化操作

    这篇文章主要介绍了Docker镜像压缩与优化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论