前言
本文我们主要讲解在Docker制作MySQL镜像时,如何通过docker-entrypoint-initdb.d机制来初始化数据库。
制作MySQL镜像时,如何初始化数据库呢?
MySQL官方给我们提供了很简单的方案:
用户只需要将准备好的初始化脚本拷贝至MySQL镜像内的docker-entrypoint-initdb.d目录即可。
docker-entrypoint-initdb.d机制
首次启动容器时,默认会执行docker-entrypoint-initdb.d目录下的.sh、.sql和.sql.gz的脚本;如果有多个按文件名的字母顺序执行。
docker-entrypoint-initdb.d目录下的脚本只有在MySQL容器首次启动时才会被执行,如果容器已经存在并正常运行,那么再次启动容器时,这些脚本不会被重新执行。
在测试脚本时,如果我们修改了脚本文件并希望重新执行它们,那我们就需要删除现有的MySQL容器以及挂载的数据卷目录。在重新创建容器时,才会重新执行docker-entrypoint-initdb.d下的脚本。
注意:删除数据卷目录文件时,将会永久丢失其中的所有数据,请确保在执行此操作之前进行必要的备份。