gpt4 book ai didi

mysql - 在 MySQL Docker 容器中包含数据

转载 作者:IT老高 更新时间:2023-10-28 21:35:13 24 4
gpt4 key购买 nike

这个问题类似于:

Setting up MySQL and importing dump within Dockerfile

但该问题的答案并没有解决我的用例。

我有一个 MySQL 数据库,其中包含 5TB 的生产数据。对于开发,我只需要大约 500MB 的数据。作为我的应用程序构建的一部分运行的集成测试需要访问 MySQL 数据库。目前,该数据库正在 Jenkins 上创建,并且数据正在通过构建过程注入(inject)其中。这很慢。

我想用 Docker 替换这个过程的这一部分。我的想法是,我将拥有一个运行 MySQL 的 Docker 容器,并且已经将我的 500MB 数据烘焙到容器中,而不是依赖与 MySQL Docker 镜像相关联的标准流程,即仅在容器启动时执行 MySQL 导入。根据迄今为止的测试,标准流程需要 4 到 5 分钟,而我希望将其缩短到几秒钟。

我原以为这是一个常见的用例,但 MySQL Docker 容器中的预烘焙数据似乎不受欢迎,并且没有关于此方法的任何指导。

有没有人有这方面的经验?是否有充分的理由不应该将数据预烘焙到 MySQL Docker 容器中?

最佳答案

根据我对此进行的调查,实际上不可能将数据包含在使用标准 MySQL 镜像作为其基础的容器中。

我试图通过从这个基础部署一个容器并对其进行操作来解决这个问题,然后再提交一个新图像。

但是,关于 MySQL 基础镜像,有一个关键点需要了解。它的数据目录 (/var/lib/mysql/) 和配置目录 (/etc/mysql/) 都设置为 Docker 卷,这意味着它们的内容映射到主机系统上的位置。

像这样的卷不会作为提交的一部分保存,因此您无法操作和保存。此外,该图像具有防止使用 ENTRYPOINT 例程操纵这些位置的功能。

所有这些都是设计使然,因为预计此图像可用于持久或独立数据集。如果可以选择将数据包含在容器中,那就太好了,但这看起来是开发人员真的不想接受的事情。

为了解决我的问题,我想回到一个基本的 Ubuntu 镜像,在其上构建我的数据库,并将其提交给一个新的镜像,它工作正常。容器大小稍大一些,但作为构建作业的一部分进行部署比等待基于 MySQL 的容器在启动时运行 500MB 导入要快得多。

关于mysql - 在 MySQL Docker 容器中包含数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898608/

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