MySql 的 Dockerfile 编写
一、什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
这里不讲Dockerfile的指令,可自行百度。
二、创建MySql的Dockerfile
创建基于5.7.30版本的MySql,编写Dockerfile文件具体如下:
三、构建MySql的Dockerfile
使用docker build
命令构建刚才创建的Dockerfile
文件,这里一定要注意最后面有个.
,--no-cache=true
表示禁用缓存。
docker build -f Dockerfile -t loamen-mysql:5.7 --no-cache=true .
如果是在Windows环境下构建,可能会出现如下提示:
该提示表示Windows构建出来的拥有所有权限,如果不需要那么多可以使用-rwxr-xr-x
修改,如果不需要修改权限可以忽略。
执行成功后可以通过docker images
查看刚才生成的镜像,这里可以看到多了loamen-mysql
的镜像
四、运行mysql容器
使用docker run
命令来运行容器,这里使用了-v
挂载本地卷,但没有使用-e MYSQL_ROOT_PASSWORD=123456
来设置密码,是因为这里要使用空密码创建初始数据。
docker run --privileged=true --name loamen-mysql -p 3306:3306 -v /my/mysql/data:/var/lib/mysql -v /my/mysql/conf.d:/etc/mysql/conf.d -v /my/mysql/logs:/var/log/mysql -d loamen-mysql:5.7
运行好后使用docker ps
来查看刚才创建的容器
五、其他操作
进入容器bash
,这里spaceon-mysql
使用CONTAINER ID
值bd285ecb867a
也可以。
docker exec -it spaceon-mysql /bin/bash
删除容器,-f
表示强制删除,如果不强制删除可以使用docker stop
先停止容器,-v
表示连本地卷一起删除。
docker rm -f loamen-mysql -v
删除镜像
docker rmi loamen-mysql:5.7
六、脚本内容
setup.sh
初始化运行脚本如下
create_db
脚本内容如下
create_db.sql
脚本内容如下
initial_data.sql
脚本内容如下
privileges.sql
脚本内容如下
如果是Windows下创建的脚本文件,请使用utf-8
编码,如果到Linux中运行依然乱码,可以使用如下命令进行转换
sed -i "s/\r//" create_db.sql
七、源码
https://github.com/loamen/dockerfile-templates
版权声明: 本文为 InfoQ 作者【玏佾】的原创文章。
原文链接:【http://xie.infoq.cn/article/a3c8ffbd34d818de010f2b0f6】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论