我想使用官方mysql docker image创建一个带有初始化数据库和导入转储文件的新映像。默认命令是mysqld
,所以我想知道如何实现这一点。
有没有办法只初始化数据库并导入转储,而无需启动mysql守护进程?
答案 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 "$@
它看起来很难看,但它到目前为止都有效。