我怎样才能创build一个初始化数据库的docker图像

我想使用官方的mysql docker镜像来创build一个具有初始化数据库和导入转储文件的新镜像。 默认的命令是mysqld ,所以我不知道如何实现这一点。 有没有办法只初始化数据库和导入转储,而不启动mysql守护进程?

在第一次启动时,MySQL泊坞窗图像自动从/docker-entrypoint-initdb.d目录parsing.sh .sql.sql.gz 。 文件将按字母顺序执行。

把你现有的数据库转储到一个文件,然后编辑Dockerfile来添加:

 ADD mysqldump.sql /docker-entrypoint-initdb.d/mysqldump.sql 

首先启动, mysqldump.sql将被导入。

一个选项是访问Docker容器的bash shell(请参阅https://hub.docker.com/_/mysql/中的 “容器shell访问和查看MySQL日志”部分),导入您的转储文件(可以使用docker cp将转储文件从主机系统复制到docker容器中),完成后,可以使用docker commit命令从当前正在运行的容器中创build一个新的Docker镜像。 之后您可以使用新创build的图像。

希望这可以帮助。

我刚刚find了一个解决scheme的mysql:5.7 。 我在构build过程中执行稍微修改的entrypoint.sh :

 COPY ./docker-entrypoint.sh / RUN /docker-entrypoint.sh mysqld 

docker-entrypoint.sh我删除了最后一行:

 exec "$@ 

它看起来很丑陋,但它迄今为止工作。