我需要创建一个带有大型数据库的Docker映像。可以使用指定文件夹中的脚本populate_net_db.sh填充数据库。我需要创建一个在构建时就这样做的Docker映像,这样使用数据库的开发人员就可以创建一个容器,而不用等很长时间才能填充数据库。
我所做的(这起作用了,但不是我所需要的):
docker-entrypoint-initdb.d文件夹。当您运行映像时,这将需要大量的时间来设置,但是可以根据需要工作,而且我可以完全按照需要使用docker exec -it "image_name" mysql -u root -p访问DB。有没有办法在docker exec -it "image_name" mysql -u root -p中显示构建时数据库?
发布于 2019-05-31 03:48:11
我设法解决了这个问题,在构建过程中将/var/lib/mysql/的内容保存在一个临时文件夹中,如:mv /var/lib/mysql /mnt/tmp/。然后,我创建了一个入口点脚本来放置在/docker-entrypoint-initdb.d文件夹中。此脚本在运行时删除/var/lib/mysql/内容,并将保存的状态从/mnt/tmp/中移出。这将导致MySQL重新启动。但是,在容器运行时,数据库变得非常快速。这种方法对一个27 the的数据库需要5分钟的时间,而从转储文件加载数据库则需要>1小时。
https://stackoverflow.com/questions/54761010
复制相似问题