**
第一种方法
使用Dockerfile制作自己的mysql镜像将初始SQL文件add到容器中,这种方法镜像会变得十分大
第二种方法
使用mysql官方docker镜像,文件映射的方式来部署带有初始数据库的mysql容器
以mysql5.7为例:
首先下载mysql:5.7镜像
docker pull mysql:5.7
在服务器home目录下创建mysql文件夹,并在mysql文件夹下面创建data、conf、log文件夹,其中conf里面创建
my.conf的配置文件,logs文件夹创建error.log文件。
#my.conf的参考配置如下
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
datadir=/var/lib/mysql
socket=/tmp/mysql.sock
port=3306
sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
long_query_time = 5
slow_query_log = 1
slow_query_log_file = slow.log
max_connections=3000
skip-name-resolve
back_log=384
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days = 7
server-id = 123
然后启动一个mysql的docker容器,命令如下
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v /home/mysql/data:/var/lib/mysql
-v /home/mysql/log/error.log:/var/log/mysql/error.log
--name test_mysql mysql:5.7
#注释
-d 容器后台运行
-p 3306:3306 前面是服务器的3306端口后面是docker容器内部端口,这样是可以通过服务器3306端口来访问docker的3306端口就是MySQL服务
-e MYSQL_ROOT_PASSWORD=123456 mysql的账号密码nacicat连接时账号为root密码123456,若要设置复杂密码可在此处设置
-v 即挂载容器外部文件到容器内部
-name 容器名/和以前的不重复就好最后是 镜像名或者镜像i
接下来使用navicat等工具连接次mysql数据库,将你的sql文件导入其中,这时候data文件夹下面就会同步 docker容器内部的data文件,保存此data文件,然后可以删除此docker容器,下次重新开启一个新的mysql容器时使用这个data文件进行映射,就可以得到带数据库的mysql容器。