docker 之mysql 学习
把 mysql 跑在docker里面,为了便于管理;
一、 docker mysql 启动
1、docker 启动命令
docker run \
-p 13306:3306 \
-v /var/mysql-5.7/conf:/etc/mysql \
-v /var/mysql-5.7/logs:/var/logs/mysql \
-v /var/mysql-5.7/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7 \
--name mysql5.7
二、各项参数说明
参数:
1)、-p 13306:3306 # 本地端口映射容器内部端口
2)、-v /var/mysql-5.7/conf:/etc/mysql # 容器数据卷
3)、-e MYSQL_ROOT_PASSWORD=123456 # 设置mysql 的root用户默认密码,初始化root用户的密码 (必填)
4)、-d # 选择后台运行
5)、--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 设置mysql服务端的默认字符集为utf8mb4
6)、mysql:5.7 # 指定镜像及运行版本
7)、-name mysql5.7 # 为容器取别名, 为了在物理机上取别容器,也为访问容器方便;
二、docker mysql 设置字符集
理论上有两种解决方案: 一个是在本地创建一个my.cnf文件挂载到容器的配置文件目录下,在配置文件中指定utf8编码,但通过自己实验,貌似这种方法不好使(可能自己有哪块没弄对); 另一个方法就是在创建容器的时候就指定编码;
执行命令:
docker run -p 13306:3306 \
-v /var/mysql-5.7/conf:/etc/mysql \
-v /var/mysql-5.7/logs:/var/logs/mysql \
-v /var/mysql-5.7/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--name mysql5.7
和之前创建容器的命令相比,多了两个参数–character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci,这样mysql容器就设置好字符集了,再次启动springboot应用操作数据库,一切正常;
想查看在创建容器时有哪些可用的选项,可以执行:
docker run -it --rm mysql:tag --verbose --help