创建一个含有初始化数据库的mysql docker镜像
一、准备一个用于数据库初始化的.sql文件二、编写Dockerfile文件三、编译Dockerfile文件1.在Dockerfile所在目录下,按住< Shift >键,然后右键,点击“在此处打开Powershell”,在powershell中使用以下命令:2.此时查看docker,可以在images里看到刚才创建的镜像了: 四、测试1.使用以下命令创建一个容器进行测试:2.然后这个终端会被阻塞,这时候打开另一个终端,使用以下命令进入这个容器:3.进入容器后,在容器里,使用以下命令,然后输入刚才设置的密码即可进入mysql:4.然后使用以下sql语句定位到test数据库:5.在使用以下sql语句后我们可以看到这个test数据库中user表中之前初始化的数据: 总结一、准备一个用于数据库初始化的.sql文件
文件示例如下:
init.sql:
-- 建库create database `test`;-- 设置字符集SET character_set_client = utf8;-- 使用这个数据库use test;-- 建表create table user(`id` int(4) primary key,`name` varchar(20))engine=innodb charset=utf8;-- 数据初始化insert into user values(1,'小明');
二、编写Dockerfile文件
Dockerfile:
FROM mysql:5.7WORKDIR /docker-entrypoint-initdb.dENV LANG=C.UTF-8ADD init.sql .
FROM mysql:5.7表示从mysql的5.7版本镜像做改动WORKDIR /docker-entrypoint-initdb.d表示工作目录在/docker-entrypoint-initdb.d,这个文件夹是mysql用于存放初始化文件的文件夹,等会需要把刚才准备的init.sql文件放进去ENV LANG=C.UTF-8防止中文乱码问题**ADD init.sql .**把init.sql文件放到当前目录(前面设置了WORKDIR工作目录即为当前目录),所以mysql可以通过这个init.sql文件进行数据库的初始化。(注意!!!init.sql后面有【空格 + .】)
三、编译Dockerfile文件
注意!!!!Dockerfile需要和init.sql在同一地址下!!!1.在Dockerfile所在目录下,按住< Shift >键,然后右键,点击“在此处打开Powershell”,在powershell中使用以下命令:
docker build -t <镜像名字> .
注意!!!!这里镜像名字后面还有【空格 + .】
我这里将镜像取名为“testimage”,所以我使用:
docker build -t testimage .
2.此时查看docker,可以在images里看到刚才创建的镜像了:
也可以使用以下命令看到这个镜像:
docker images
四、测试
1.使用以下命令创建一个容器进行测试:
docker run -e MYSQL_ROOT_PASSWORD=<数据库root用户的密码> <容器名称>
MYSQL_ROOT_PASSWORD是创建mysql容器必有的环境变量参数
我这里设置密码为123456,容器名称为testimage,所以我使用:
docker run -e MYSQL_ROOT_PASSWORD=123456 testimage
2.然后这个终端会被阻塞,这时候打开另一个终端,使用以下命令进入这个容器:
docker exec -it <容器名称> bash
我这里刚刚创建的容器名称叫做testimage,所以我使用:
docker exec -it testimage bash
3.进入容器后,在容器里,使用以下命令,然后输入刚才设置的密码即可进入mysql:
mysql -uroot -p
4.然后使用以下sql语句定位到test数据库:
use test;
5.在使用以下sql语句后我们可以看到这个test数据库中user表中之前初始化的数据:
select * from user;
总结
编写.sql文件用于初始化,编写Dockerfile对某个已有的mysql镜像进行数据库初始化并生成镜像
参考:[/yu1014745867/article/details/113884953](/yu1014745867/article/details/113884953)