之前为了节省安装时间,所以用官方mysql docker镜像启动mysql。
通过
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag
some-mysql 指定了该容器的名字,my-secret-pw 指定了 root 用户的密码,tag 参数指定了你想要的 MySQL 版本
这样数据是没有持久化的 所以在启动参数中需要挂载本地目录
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag
于是这样数据库一直跑着,但是由于最近程序需要支持emoji表情,不得不将mysql的字符集更改。
这时候就可以挂载自定义配置文件,官方文档说明
当 MySQL 服务启动时会以 /etc/mysql/my.cnf 为配置文件,本文件会导入 /etc/mysql/conf.d 目录中所有以 .cnf 为后缀的文件。这些文件会拓展或覆盖 /etc/mysql/my.cnf 文件中的配置。因此你可以创建你自己需要的配置文件并挂载至 MySQL 容器中的 /etc/mysql/conf.d 目录。
所以最简单改变数据库配置的方式就是在宿主机上新建配置文件,改成utf8mb4
[client]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set=utf8mb4
随后将文件复制到相应docker容器文件夹下
docker cp /home/my.cnf(宿主机文件路径) [容器id]:/etc/mysql/mysql.conf.d
最后使用docker stop和start命令重启容器就实现了加载自定义配置。