一、准备一个用于数据库初始化的.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.7 WORKDIR /docker-entrypoint-initdb.d ENV LANG=C.UTF-8 ADD 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”,所以我使用:
2.此时查看docker,可以在images里看到刚才创建的镜像了:docker build -t testimage .
也可以使用以下命令看到这个镜像:
docker images四、测试 1.使用以下命令创建一个容器进行测试:
docker run -e MYSQL_ROOT_PASSWORD=<数据库root用户的密码> <容器名称>
MYSQL_ROOT_PASSWORD是创建mysql容器必有的环境变量参数
我这里设置密码为123456,容器名称为testimage,所以我使用:
2.然后这个终端会被阻塞,这时候打开另一个终端,使用以下命令进入这个容器:docker run -e MYSQL_ROOT_PASSWORD=123456 testimage
docker exec -it <容器名称> bash
我这里刚刚创建的容器名称叫做testimage,所以我使用:
3.进入容器后,在容器里,使用以下命令,然后输入刚才设置的密码即可进入mysql:docker exec -it testimage bash
mysql -uroot -p4.然后使用以下sql语句定位到test数据库:
use test;5.在使用以下sql语句后我们可以看到这个test数据库中user表中之前初始化的数据:
select * from user;总结
编写.sql文件用于初始化,编写Dockerfile对某个已有的mysql镜像进行数据库初始化并生成镜像
参考:[https://blog.csdn.net/yu1014745867/article/details/113884953](https://blog.csdn.net/yu1014745867/article/details/113884953)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)