如何使用 docker 搭建一个 mysql 服务

 更新时间:2022年09月26日 11:07:45   作者:二牛QAQ  
这篇文章主要介绍了如何使用 docker 搭建一个mysql服务,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

前言

在日常开发中,数据库 mysql 是必不可少的,但是由于其繁琐的配置,安装 mysql 时总是不太顺利,还可能会踩坑。所以本文的目的,可以让你快速搭建一个 mysql 服务。

下面跟着以下教程,可以让你快速、流畅的安装 mysql 数据库,流程可分成 4 步。

1. 编写 docker-compose.yml 文件

创建 docker-compose.yml 文件,文件内容如下:

version: '3.1'

services:
    mysql:
        image: mysql:8
        restart: always
        # https://stackoverflow.com/a/49021165/7756877,使用默认的授权插件,
        # mysql 8 默认使用 caching_sha2_password 作为授权插件,并非 mysql_native_password,
        # 然而 mysql 驱动还不支持 caching_sha2_password,为了往后兼容所以要加这一行。
        command: --default-authentication-plugin=mysql_native_password
        ports:
            - "7306:3306"
        volumes:
            - "./table.sql:/docker-entrypoint-initdb.d/01-init-table.sql"
        environment:
            MYSQL_ROOT_PASSWORD: mysql # root 用户的密码
            MYSQL_DATABASE: lingmo   # 默认创建 lingmo 数据库
            MYSQL_USER: kele         # 新建一个用户
            MYSQL_PASSWORD: baishi2020 # 新建用户的密码

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

docker-compose 的 services 属性中定义的一个 mysql

  • image 表明镜像版本是 mysql:8
  • command 通过参数 --default-authentication-plugin 定义了一个默认插件 mysql_native_password, 原因是: mysql 8 默认使用 caching_sha2_password 作为授权插件,并非 mysql_native_password,然而 mysql 驱动还不支持 caching_sha2_password,为了往后兼容所以要加这一行。
  • port 表明使用本地的 7306 端口映射容器中 mysql 的 3306 端口。
  • volumes 表明将 ./table.sql 文件挂载到容器的 docker-entrypoint-initdb.d/01-init-table.sql 文件中,而存在容器中 docker-entrypoint-initdb.d/ 目录中的文件,在 mysql 第一次启动时会执行,之后重启容器不会重复执行。
  • environment
    • MYSQL_ROOT_PASSWORD: 创建 mysql 服务时会新建一个 root 用户,这个属性定义的是 root 用户密码。
    • MYSQL_DATABASE: 默认创建一个 lingmo 的数据库。
    • MYSQL_USER: 再次创建一个用户,用户名是 kele。
    • MYSQL_PASSWORD: 表明 kele 用户的密码,这里是 baishi2020

2. 定义测试数据

新建测试数据表 table.sql ,目的是在 mysql 启动时初始化数据。

DROP TABLE IF EXISTS `students`;
CREATE TABLE `students` (
    `student_id` varchar(255) NOT NULL,
    `student_name` varchar(255),
    `sex` tinyint(1) DEFAULT NULL,
    PRIMARY KEY (`student_id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4;

INSERT INTO `students`(`student_id`, `student_name`, `sex`) VALUES(1, 'jake', 0), (2, 'jenery', 1);

以上表示新建一张 students 表,然后插入两条数据。

3. 定义启动文件

新建启动文件 set-env.sh, 通过 docker-compose 启动 mysql 容器服务;然后通过 souce set-env.sh 把 mysql-local-dev 设置到环境变量中去。

#!/bin/bash

MYSQL_LOCAL_ENV_DIR="$( cd "$(dirname "$0")"; pwd -P )"

function mysql-local-dev() {
    case $1 in
        "up")
            docker-compose -p lingmo -f "$MYSQL_LOCAL_ENV_DIR"/docker-compose.yml up -d
            ;;
        "down")
            docker-compose -p lingmo -f "$MYSQL_LOCAL_ENV_DIR"/docker-compose.yml down
            ;;
        *)
            echo 'mysql-local-dev [up | down]'
    esac
}

启动 mysql 的三个文件已定义完成,目录结构为以下:

➜  local-mysql git:(main) ✗ tree . 
.
├── docker-compose.yml
├── set-env.sh
└── table.sql

0 directories, 3 files

最后,我们测试下是否可启动 mysql。

4. 启停 mysql

  • 启动 mysql
mysql-local-dev up

说明 mysql 启动成功。

 通过相应的账号、密码登录 mysql 即可。

  • 停止 mysql
mysql-local-dev down 

到此这篇关于如何使用 docker 搭建一个 mysql 服务的文章就介绍到这了,更多相关 docker 搭建mysql 服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 常见问题解决

    Docker 常见问题解决

    这篇文章主要介绍了如何解决Docker 常见问题,帮助大家更好的理解和使用docker容器,感兴趣的朋友可以了解下
    2020-09-09
  • docker容器环境安装及镜像基础操作

    docker容器环境安装及镜像基础操作

    容器是一种轻量级虚拟化技术,能够快速构建业务环境并便于业务迁移,解决兼容性问题,这篇文章主要介绍了docker容器环境安装及镜像基础操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • Docker中搭建配置Git环境的过程

    Docker中搭建配置Git环境的过程

    工作中遇到了需要在Docker环境中操作GitLab仓库的场景,需要事先在Docker中搭好Git环境,但是很多朋友不是很清楚Docker配置Git环境的过程,今天通过本文给大家详细介绍下,需要的朋友参考下吧
    2021-08-08
  • 利用docker-compsoe部署前后端分离的项目方法

    利用docker-compsoe部署前后端分离的项目方法

    这篇文章主要介绍了利用docker-compsoe部署前后端分离的项目方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 详解Docker目录挂载的方法总结

    详解Docker目录挂载的方法总结

    本篇文章主要介绍了Docker目录挂载的总结,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • docker实现MySQL数据同步的方法

    docker实现MySQL数据同步的方法

    docker的一大好处是在本地可以很方便快速的搭建负载均衡,主从同步等需要多主机的环境,本文主要介绍了docker实现MySQL数据同步的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 前端项目容器化Docker打包部署方式详解

    前端项目容器化Docker打包部署方式详解

    这篇文章主要为大家介绍了前端项目容器化Docker打包部署方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • cordon节点drain驱逐节点delete节点详解

    cordon节点drain驱逐节点delete节点详解

    这篇文章主要为大家介绍了cordon节点drain驱逐节点delete节点详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • docker-compose部署MySQL8的实现

    docker-compose部署MySQL8的实现

    本文主要介绍了docker-compose部署MySQL8的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • Docker图文详解

    Docker图文详解

    今天小编就为大家分享一篇关于Docker图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论