繁体   English   中英

在构建时在Docker容器中创建MySQL数据库

[英]Create MySQL database in Docker container at build time

我需要使用大型数据库创建Docker映像。 可以使用脚本populate_net_db.sh从指定的文件夹中populate_net_db.sh数据库。 我需要创建在构建时完成此操作的Docker映像,以便使用数据库的开发人员可以创建容器,而不必等待很长时间才能填充数据库。

我做了什么(这有效,但不是我需要的):

  • 我可以在运行时创建数据库,并使用mysql Docker映像填充它,并将所需文件放入docker-entrypoint-initdb.d文件夹中。 运行映像时,这将需要花费大量时间来进行设置,但是可以根据需要进行工作,而我可以根据需要使用docker exec -it "image_name" mysql -u root -p访问数据库。

  • 我可以在构建时使用RUN命令创建相同的数据库,并查看在构建时正确设置了表,但是,当我运行此类映像时,将建立新的mysql DB,而构建时的DB消失了。

有没有办法在docker exec -it "image_name" mysql -u root -p显示构建时数据库?

我设法通过保存的内容来解决这个问题/var/lib/mysql/编译期间作为在临时文件夹: mv /var/lib/mysql /mnt/tmp/ 然后,我创建了一个入口点脚本来放入/docker-entrypoint-initdb.d文件夹。 该脚本在运行时删除/var/lib/mysql/内容,并将保存的状态从/mnt/tmp/移出。 这将导致MySQL重新启动。 但是,数据库在容器运行时变得非常快速可用。 对于27GB的数据库,此方法大约需要5分钟,而从转储文件中加载数据库需要1小时以上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM