docker——部署mysql数据库并初始化

时间:2025-04-01 10:43:00

1.原理

当Mysql容器首次启动时,会在 /目录下扫描 .sh,.sql,.类型的文件。如果这些类型的文件存在,将执行它们来初始化一个数据库。这些文件会按照字母的顺序执行。

2.自定义 Dockerfile

我们编写自己的Dockerfile来实现我们的需求,这里以 Mysql:5.7 为例。不同的版本可能有一定的出入,需要详细去阅读官方文档。脚本如下:

FROM mysql:5.7
LABEL OG=
COPY  /etc/mysql//
COPY ./sql  /tmp/sql
RUN mv /tmp/sql/*.sql /
RUN rm -rf /tmp/sql

第一步,引入官方 Mysql:5.7 Docker 镜像。

第二步,无实际意义,主要是作者、组织信息。

第三步,很重要!本来我没有配置第三行,结果运行容器后发现初始化数据的中文全部乱码了。所以需要在初始化数据库前修改Mysql的编码等配置,这里我顺便把时区也改为了+8:00。

第四步,复制包含数据库脚本的 ./sql文件夹到镜像的/tmp/sql下。

第五步,使用 mv 命令把第四步拷贝的文件夹下的所有.sql文件复制到 /下,这样才能利用2.章节的机制进行初始化数据库。

第六步,删除使用过的临时目录。


然后你可以通过构建镜像命令构建自定义的 Mysql 镜像:

# 一定不要忘记最后的一个 . 点
docker build -t mysql:5.7c .

这个一定要在当前目录(有dockerfile的目录)运行,最后一个 .  表示当前目录