docker-mysql配置
本文使用的是DaoCloud上的镜像,其上有较为详细的部署及配置文档,这里主要记录一些部署过程以及遇到的小坑
下载mysql
docker run -d -p 3306:3306 --name mysql -v /home/jochen/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 daocloud.io/library/mysql:5.7.6
上面-v 是挂载数据目录操作,就是把生成的数据库文件映射到宿主机本地
ps:这里可能会遇到一个错误:
2021-01-06T01:10:13.287151Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2021-01-06T01:10:13.287166Z 0 [ERROR] Aborting
此错误出现的原因是我们宿主机的目录下有其他文件存在,如果数据库的数据文件夹部分,如果使用挂载的宿主主机的文件夹,要保证这个文件夹里面是空的(里面有.gitignore等隐藏文件没事),如果里面有文件,就不会初始化数据库
所以在运行容器时,要确保映射的宿主机数据目录是空的
配置mysql忽略大小写
mysql的配置文件在容器的/etc/myql/my.cnf文件下,这个配置文件会覆盖容器中所有的配置文件,一般我们需要修改mysql忽略大小写,只需要在该文件下添加这么一句话
#[mysqld]后添加
lower_case_table_names=1
然后重启应用即可
第一种修改配置文件的方式,是直接进入容器内部修改上述配置文件
#进入容器中
docker exec -it 容器名或id /bin/bash
#容器中执行
service mysql restart
#或者退出容器直接重启mysql容器
docker restart mysql
但是在容器内部默认是不含有编辑工具,即不存在我们常用的vim工具,此时我们修改去下载,默认的镜像源网速是十分感人的,我们需要修改镜像源
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
#更新安装源
apt-get update
#如果下载过程中卡在[waiting for headers] 删除/var/cache/apt/archives/下的所有文件
#安装vim
apt-get install vim
第二种修改配置文件的方式,是将配置文件映射到宿主机中,在运行容器的时候我们可以把容器的/etc/mysql/conf.d
目录映射过来
当 MySQL 服务启动时会以 /etc/mysql/my.cnf
为配置文件,本文件会导入 /etc/mysql/conf.d
目录中所有以 .cnf
为后缀的文件。这些文件会拓展或覆盖 /etc/mysql/my.cnf
文件中的配置。因此你可以创建你自己需要的配置文件并挂载至 MySQL 容器中的 /etc/mysql/conf.d
目录。