如何使用初始化数据库创建docker镜像

时间:2017-08-08 08:30:19

标签: mysql docker

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

3 个答案:

答案 0 :(得分:1)

MySQL docker镜像在首次启动时自动从.sh目录解析.sql .sql.gz/docker-entrypoint-initdb.d。文件将按字母顺序执行。

将现有数据库转储到文件,然后编辑Dockerfile以添加:

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

首次启动时,系统会导入mysqldump.sql

答案 1 :(得分:0)

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

希望这有帮助。

答案 2 :(得分:0)

我刚刚找到mysql:5.7的解决方案。我在构建过程中执行略微修改的entrypoint.sh

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

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

exec "$@

它看起来很难看,但它到目前为止都有效。