gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 16:16:22 25 4
gpt4 key购买 nike

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

我所做的(这有效,但不是我需要的):

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

  • 我可以在构建时使用 RUN 命令创建相同的数据库,并查看表在构建时是否正确设置,但是,当我运行这样的镜像时,会设置一个新的 mysql 数据库,并且来自构建的数据库不见了。

有没有办法让构建时数据库显示在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 小时。

关于mysql - 在构建时在 Docker 容器中创建 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54761010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com