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 目录。

原文地址:https://www.cnblogs.com/deehuang/p/14239435.html